国産パソコンで シフトJISコードが普及する中、UNIXで日本語を扱うための文字コードとしてAT&Tが制定したものが EUC-JP である。Extended UNIX Code Packed Format for Japaneseの略で、日本語EUCとも呼ばれる。
JIS X 0208 と EUC-JPの関係
EUC-JP は、ISO 2022 8ビット のGR領域(0xA0~0xFF)を第1・第2バイトとして使う2バイト・コードである。
GL領域には ASCIIコードを配置する。
ただ、このままでは半角カタカナを扱えないため、C1領域の一部(0x8E)に半角カタカナを割り当てている。
EUC-JP コードの一部(冒頭部分)を下表に掲げる。グレーは未定義文字である。
EUC-JP コードの一部(冒頭部分)を下表に掲げる。グレーは未定義文字である。
EUC-JPの派生型
EUC-JP にも シフトJIS のような派生型がある。
CP51932 は、NEC特殊文字 と NEC選定IBM拡張文字 を組み込んだもので、Windows 98 から利用できるようになった。
eucJP-ms は、NEC特殊文字 と IBM拡張文字 に加え、ユーザー定義文字にも対応したもので、TOG日本ベンダ協議会などが策定に当たった。
その後、IBM拡張文字 は普及しなかったため、eucJP-ms は使わないほうが無難である。
CP51932 は、NEC特殊文字 と NEC選定IBM拡張文字 を組み込んだもので、Windows 98 から利用できるようになった。
eucJP-ms は、NEC特殊文字 と IBM拡張文字 に加え、ユーザー定義文字にも対応したもので、TOG日本ベンダ協議会などが策定に当たった。
その後、IBM拡張文字 は普及しなかったため、eucJP-ms は使わないほうが無難である。
EUC-JP と多言語化
EUC-JP は ISO 2022 の延長線上にあり、国際的に受け入れやすい。実際、ハングル文字を表す EUC-KR や、簡体中国文字を表す EUC-CN などが制定されている。
ただし、各言語向けのコード体系が作りやすいという意味で、後述する Unicode のように、それだけですべての言語・文字を包含するという目的ではない。
EUC-JP をシフトJIS と比べた場合、半角カタカナを2バイトで表すところが決定的に異なる。
シフトJIS では、全角文字は2バイト、半角文字は1バイトという対応になっており、文字列の横幅を計算するのに好都合である。
たとえば「アは半角、アは全角」というシフトJIS の文字列に対し、PHPの組み込み関数 strlen を適用すると、結果は17である。同様に EUC-JP の文字列に適用すると、結果は18になる。
ただし、各言語向けのコード体系が作りやすいという意味で、後述する Unicode のように、それだけですべての言語・文字を包含するという目的ではない。
EUC-JP をシフトJIS と比べた場合、半角カタカナを2バイトで表すところが決定的に異なる。
シフトJIS では、全角文字は2バイト、半角文字は1バイトという対応になっており、文字列の横幅を計算するのに好都合である。
たとえば「アは半角、アは全角」というシフトJIS の文字列に対し、PHPの組み込み関数 strlen を適用すると、結果は17である。同様に EUC-JP の文字列に適用すると、結果は18になる。
参考サイト
- EUC-JP:Wikipedia
- シフトJISコードと ASCIIコードの共存:ぱふぅ家のホームページ
- JIS X 0201 と ISO 2022:ぱふぅ家のホームページ
- eucJP-ms と CP51932 の違い:コードページ932
- SimplePie EUC-JP 文字化け対策(仮対処):zontheworld
- C#で文字列をEUC-JPでURLエンコードして送るには:WEB系エンジニアの備忘録
(この項おわり)