« MacBook ProのリカバリDVDメディアをバックアップ | Main | 今日のAmazon物資(2007/07/10) »

2007.07.10

Oracle 9i/10gの全角チルダ問題、解決するならJA16SJISTILDE

うちのblogの検索結果を見てると、頻繁に出てくるので一応ネタを

Oracle 9i以降とJA16SJISを使うと、全角のチルダ「〜」が文字化けする、または波ダッシュが表示される、という WAVE DASH - FULLWIDTH TILDE問題というのがあります。
ざっくり言うと、OracleがUnicodeを解釈する処理でMSのUnicode変換処理を利用しているのですが、ここの解釈で全角チルダと波ダッシュを入れ替えて扱っていることが問題です。
そのため、WindowsとMac OS Xでも全角チルダ波ダッシュの字形が違う、Shift_JISのテキストファイル出力時に文字化けする、などの問題が生じています。

このため、対策としては

  1. DBの文字コードセットにJA16SJISTILDEなどTILDE付きの文字コードにする
  2. VB.NETなどUnicodeネイティブな環境で全角チルダと波ダッシュのコードを入れ替える処理を行う

のどちらかです。
前者はVB6などOSネイティブの文字コードを使っている場合の対策、後者はUnicodeネイティブの環境ですが、後者の方は変換処理をあちこちに突っ込む修正コストが大きいので、コードを後から修正する必要がある場合は、前者の修正方法がよいでしょう。

この問題は根が深いので注意が必要ですね。

Doublet_20070709 今日の夕飯:だぶれっと ミックスグリル ガーリック + 半ライス ¥1,350

|

« MacBook ProのリカバリDVDメディアをバックアップ | Main | 今日のAmazon物資(2007/07/10) »

Comments

Post a comment



(Not displayed with comment.)


Comments are moderated, and will not appear on this weblog until the author has approved them.



TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/27186/15709825

Listed below are links to weblogs that reference Oracle 9i/10gの全角チルダ問題、解決するならJA16SJISTILDE:

« MacBook ProのリカバリDVDメディアをバックアップ | Main | 今日のAmazon物資(2007/07/10) »