[広告]
声とことばの磯貝メソッド
ヴォイスチェックサービス

04月07日

[開発日記] よくわかる波ダッシュ問題

波ダッシュ問題のことをいろいろ書いたのだが、やっぱり要点を突いていないような気がしたので今度こそズバリと書きたい。

  1. 波ダッシュと全角チルダのコードをめぐる世界は「Windowsの世界」と「Windows以外の世界」に分類できる。
  2. それぞれの世界で閉じている分にはなんら問題はない。
  3. Windowsはshift_jisの世界であり、その世界においては0x8160の波ダッシュしか存在せず、全角チルダは存在しない。
  4. Windowsが外の世界とsjis以外で関わる時に問題が起きる。
  5. Windowsがユニコードで波ダッシュ(U+301C、文字参照の&#12316、utf-8の0xE3809C)をもらうと逆ニョロを表示する。(XPまで)
  6. Windowsがユニコードで全角チルダ(U+FF5E、文字参照の&#65374、utf-8の0xEFBD9E)をもらうと波ダッシュとして認識する。(おそらく内部ではshift_jisの0x8160に変換している)
  7. WindowsがEUC-JPで全角チルダ(0x8FA2B7)をもらうと「潤オ」と表示する。
  8. Windowsが波ダッシュをユニコードで送る場合に全角チルダ(U+FF5E、utf-8の0xEFBD9E)にして送る
  9. ちなみに、Windowsが波ダッシュをEUC-JPで送る場合は0xA1C1(波ダッシュ)で送る。(問題なし)
  10. Windows以外がユニコードからsjisに変換する場合に、全角チルダはsjisでは未定義なので「?」等の文字に置き換える。
例えるなら、「みかん」は分かるが「オレンジ」と「レモン」を間違っておぼえてるお婆ちゃんみたいなもんだ。

最初の記事でマッピングの表を書いたが、少し訂正。

Windows以外の世界
unicode文字参照utf-8eucsjis
波ダッシュU+301C&#123160xE3809C0xA1C10x8160
全角チルダU+FF5E&#653740xEFBD9E0x8FA2B7-

Windowsの世界
sjiseucunicode
波ダッシュ0x8160
(正ニョロ)
0xA1C1
(正ニョロ)
U+FF5E
(正ニョロ)
unicodeの波ダッシュ--U+301C
(逆ニョロ)
(未定義)-0x8FA2B7
(潤オ)
-

まだ続きそうだな、こりゃ。

posted by rodoku_ole at 2009-04-07 | Comment(0) | TrackBack(0) | 開発日記