〜の問題

 うおっ.すごくありがちな現象が起きてます.「〜」の文字化けです.
 OracleはSorarisに入っていてキャラクタセットがJA16SJISです.ところがこいつからデータを取ってくると文字化けがおきます.これはWindowsNT系が使っている,MS932というコードが「〜」(ShiftJISの0x8160)をU+301cにマッピングしているせいらしいです..NETではString型は全部ユニコードなのです.ところが,そんなマッピングしてるくせに、書き出そうとすると正しくShift-JISに戻してくれません.
 Javaならバイト文字列で
 new String(str.getBytes("SJIS"));
 とかするとMS932ではない変換をしてくれると思うのだけど.C#.NETではどうしたらいいんでしょうねえ?
 Microsoftに情報があった4つの文字を強制的に代替文字に変換することで応急処置。文字コードの問題は奥が深いので調べておくことにします。