WAVE DASH問題
昨日、書き込んだ"〜"の問題で、早速miyataさんからコメントがありました。
おかげさまで、仮の対応を完了しました。
仮と書いたのは、問題は"〜"だけではなく、もう何種類かあるからです。
結局、DBに書き込むときに、文字列に対して、
.replace('\u301c','\uff5e')
とし、逆に表示するときには、
.replace('\uff5e','\u301c')
とする対処を入れました。少し前にリファクタリングをやった効果があって、修正箇所は少なくてすみました。
miyataさん、ありがとうございました。


文字化けは開発者泣かせですね。皆がUNICODEを使ってくれれば、苦労はないのに。
あれから興味が出て、調べてみました。
やはり、解決策としては
「この問題を根本的に解決する方法は今のところなく、正しい処理が行われるように、適時文字コード変換を行うしかありません。」
とありました。
変換テーブル違いは、こんなにありました。
~ 0x007E 0x007E[TILDE]
\ 0x005C 0x005C[REVERSE SOLIDUS]
\ 0x815F 0xFF3C[FULLWIDTH REVERSE SOLIDUS]
〜 0x8160 0x301C[WAVE DASH]
‖ 0x8161 0x2016[DOUBLE VERTICAL LINE]
− 0x817C 0x2212[MINUS SIGN]
¢ 0x8191 0x00A2[CENT SIGN]
£ 0x8192 0x00A3[POUND SIGN]
¬ 0x81CA 0x00AC[NOT SIGN]
http://java-house.jp/ml/archive/j-h-b/014452.html
を参考にしました。
miyataさん、貴重な情報をありがとうございました。とても参考になります。
ところで、私が得た情報では、Unicodeも標準UnicodeとMSのUnicodeがあるということだったのですが・・・。
http://www.siisise.net/charset.html
実は先ほど、クライアントから、どうなっていますかという、メールをいただいたばかり。おかげさまで回答することができました。
ありがとうございました。
WEBアプリでは、サーバー => UNIX, ブラウザ => Winowsというのはごくありきたりの事なので、
「たまたまその文字(〜)を使っていなかった」と言うだけのことで
WAVE DASH問題はいつ起こっても不思議ではないわけですね。
マルチプラットフォームで動くJAVAの柔軟さがあだになっているということでしょうか。
そもそも、UNICODEの規定に従わないマ社が要因との説もありますが。
日本のJAVA技術者の受難はまだまだ続きそうですね。
JAVA PRESS Vol.37に日本語対応の特集がありました。(前々号 -> 今頃読んでます。)
風間一洋氏の「国際化と日本語処理」と言う本もあります。
(文字化けだけで1冊の書物が成り立つとは!結構なお値段です。)