UTF-8での文字化け
以前のエントリーOracleとJavaの間で、全角マイナスが文字化け。 - mokkouyou2001の日記
にも少し関係。
IBM-Unicode(標準Unicode)と、MS-Unicodeの間でも以下の差がある。
特に問題は無い場合が多いかもしれないが、外部向けのやり取りの1部にMS932(のファイルでのやりとり)がある。
という場合はMS-Unicode向けの変換をかませておくのが無難かもしれない。
というか、まぁ検索のことを考えたりするとどちらかに寄せるのが無難か・・・
なんでこんなことが起こるかなぁ・・・
悩ましいねぇ。
文字 | IBM-Unicode | MS-Unicode |
---|---|---|
―(全角ダッシュ)*1 | U+2014 | U+2015 |
〜 | U+301C | U+FF5E |
‖ | U+2016 | U+2225 |
−(全角マイナス) | U+2212 | U+FF0D |
¢ | U+00A2 | U+FFE0 |
£ | U+00A3 | U+FFE1 |
¬ | U+00AC | U+FFE2 |
表記を変えると、以下のような変換をしろということもあり
この表記はなんぞや??(バイト表記?)
文字 | IBM-Unicode | MS-Unicode |
---|---|---|
―(全角ダッシュ)*1 | E28094 | E28095 |
〜 | E3809C | EFBD9E |
‖ | E28096 | E288A5 |
−(全角マイナス) | E28892 | EFBC8D |
¢ | C2A2 | EFBFA0 |
£ | C2A3 | EFBFA1 |
¬ | C2AC | EFBFA2 |
ちなみに、全角ダッシュ(EM DASH(U+2014)、HORIZONTAL BAR(U+2015))に関しては毛色が違う問題かもしれないけど一応。
(変換しないと(U+2014のままだと)対応する全角ダッシュが、無いので、MS932に変換した際に化けます。)
ちなみに、以前の半角マイナスをTO_MULTI_BYTEした際の問題に関しては、
Oracleは、IBM-Unicodeの全角マイナスに変換し、Windows系の画面での入力による全角マイナスとは
異なるといったのがポイントのようですね。
参考
http://www.ingrid.org/java/i18n/encoding/ja-conv.html
*1:EM DASH:U+2014、HORIZONTAL BAR:U+2015