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