misc.log

日常茶飯事とお仕事と

Shift_JIS→UNICODE→Shift_JISでおかしくなる文字 (1)

テスト中。Shift_JISで定義されたORACLE9iに、Shift_JISで書かれたテキストの文字をVB.NET経由で書き込み、再度読み込んでもとのデータとの一致を確認してみる。だめっぽい。
記号系の文字が化けるのは判るとしても、「〜」がよくわからない。最初は81-60というShift_JISコードだったものをVB.NETに取り込み(この時点でUNICODE)、ODP.NET経由でOracle9iに書き込む。それを再度VB.NETに読み直し、Encoding.GetEncoding("Shift_JIS")を使ってShift_JISに変換。取得できたバイト文字列をBitConverter.GetStringで取り出してみると「3F」。なんで?

...これはかなり有名な問題らしい。
データベースのキャラクタセットをJA16SJISTILDEに指定することで回避できるらしいが、現時点では、新しく作り直せるORACLEが無いのでこれ以上の検証は無理。