文字コード変換をすれば化けるのは当然。

"〜"文字(SJISコード:8160)→WAVE DASH(Unicode:301C)→FULLWIDTH TILDE(cp932:FF5E)

ttp://support.microsoft.com/kb/170559/ja
[PRB] SHIFT - JIS と Unicode 間の変換問題

文字列をバイナリのまま扱って、変換テーブを自分で持って表示の時点で変換するのが一番問題が少なく対応もしやすい。
システムとか出来合いの物だと、落とし穴が有るし、仕様を満たさない場合の対処が面倒。