English page もどる

EUC-JP 往復変換の互換性 (2001-04-30)

これは最も簡単な問題です。私が言いたいのは、 問題が存在するということを理解するのが簡単ということであって、 問題を解決するのが簡単という意味ではありません。

中日韓の世界では、CES (Character Encoding Scheme、 文字エンコーディングスキーム) と CCS (Coded Character Set、 符号化文字集合) とが (理念の上だけではなく) 実際に異なる概念となっています。たとえば、 EUC-JP は CES であって、ASCII と JIS X 0208 という CCS を含んでいます (追加で JIS X 0201 カナと JIS X 0212 を含むこともあります)。

訳注: 8ビットエンコーディングの世界では、CES と CCS との区別をする必要がありません。

Unicode Consortium が提供している、JIS X 0208 から Unicode への変換表があります (http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/JIS/JIS0208.TXT)。 それ (version 0.9, 1994-03-08) は、JIS X 0208 における 0x2140 を Unicode の U+005C (逆スラッシュ) へと変換します。 JIS X 0208 を単独で使うときにはこれで構わないのですが、 JIS X 0208 が ASCII と組み合わせられて EUC-JP として使われるときに、 コードポイントの衝突が生じます。

コードポイントの衝突とはつまり、JIS X 0208 の 0x2140 の文字 (いわゆる全角の逆スラッシュ) と、ASCII の 0x5c (いわゆる半角の逆スラッシュ) とが両方 Unicode の U+005C (逆スラッシュ) に変換されてしまい、 逆方向の変換をするときに、Unicode の U+005C を JIS X 0208 の 0x2140 に変換したらいいのか、それとも ASCII の 0x5c に変換したらいいのか分からなくなってしまう、 という問題のことです。 ちなみに、U+xxxx というのは、Unicode の文字を表す表記法です。 U+0020 から U+007E までは、ASCII の 0x20 から 0x7e までと同一になっています。

EUC-JP に JIS X 0212 も用いるとき、もうひとつの衝突問題が起きます。 それは JIS X 0212 の 0x2237 です。 http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/JIS/JIS0212.TXT によると、それは Unicode の U+007E に変換されます。


Tomohiro KUBOTA <debian at tmail dot plala dot or dot jp>