Gimiteといいます。

> Iconvをつかって「〜」をutf-8からshift-jisへ変換しようとすると、例外が起こります。
>
>
> Iconv.new('shift-jis', 'utf-8').iconv('〜')

WindowsとIconvで、「〜」に対応するUnicode文字列が
食い違ってるせいでどうのこうのとかいう問題ですね。

代わりにKconvを使うというのはどうでしょう。

require "kconv"
"〜".kconv(Kconv::SJIS, Kconv::UTF8)

Iconvを使うとしたらこんな感じでしょうか
(やってることは竹中さんの1と同じですが)。

mod_str= "〜".gsub(/\357\275\236/u, "\343\200\234")
Iconv.new('shift-jis', 'utf-8').iconv(mod_str)