文字コード掲示板


記事表示


No.057投稿日時:2003/04/18(金) 08:55    <↑親記事:No.055>
投稿者:森山 将之

Cp943C で重複符号化されている文字の変換

Unicode を経由しての MS932 と Cp943C の変換では、5 文字に関して文字化けが起きる危険性がある事が(Unicode 上でのコードポイントが異なる)、えびはらさんの調べで分かりましたが、いわゆる機種依存文字に関しての扱いがどうなっているのか良く分からなかったので Java (Java 2 v 1.4.1_02) で調べてみました。

いわゆる機種依存文字の扱いで問題になってくるのが、複数のコードポイントに同じ文字が割り当てられている所で、シフトJIS → Unicode の変換で、多対1 の変換が行われる為、Unicode → シフトJIS の変換では、コードポイントを選択する必要性が出てきます。
その選択の際の規則は次のようになっているようです。

Unicode → Windows-31J (MS932) の変換規則
 1. 2区にある文字は2区のコードポイントを用いる
 2. 13区にある文字は13区のコードポイントを用いる
 3. 115〜119区にある文字は115〜119区のコードポイントを用いる

Unicode → Cp943C の変換規則
 1. 2区にある文字は2区のコードポイントを用いる
 2. 115〜119区にある文字は115〜119区のコードポイントを用いる
 3. 13区にある文字は13区のコードポイントを用いる

MS932, Cp943C ともに 2区(JIS文字) 優先で、89〜92区(NEC選定IBM拡張文字) は用いません。
MS932 では 13区(NEC特殊文字)を優先するのに対して、Cp943C では 115〜119区 (IBM選定拡張文字) を優先していました。

具体的に Cp943C と MS932 で異なるコードポイントは次の通りです。

Cp943C MS932 Unicode
 FA40 8754 U2160 ROMAN NUMERAL ONE
 FA41 8755 U2161 ROMAN NUMERAL TWO
 FA42 8756 U2162 ROMAN NUMERAL THREE
 FA43 8757 U2163 ROMAN NUMERAL FOUR
 FA44 8758 U2164 ROMAN NUMERAL FIVE
 FA45 8759 U2165 ROMAN NUMERAL SIX
 FA46 875A U2166 ROMAN NUMERAL SEVEN
 FA47 875B U2167 ROMAN NUMERAL EIGHT
 FA48 875C U2168 ROMAN NUMERAL NINE
 FA49 875D U2169 ROMAN NUMERAL TEN
 FA58 878A U3231 PARENTHESIZED IDEOGRAPH STOCK
 FA59 8782 U2116 NUMERO SIGN
 FA5A 8784 U2121 TELEPHONE SIGN


Script : Sylpheed 1.24
Modified by MORIYAMA Masayuki