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