ISO/IEC 2022のサブセットで、8単位の拡張法を用いた符号系のこと。
EUCはG0〜G3の各バッファに予め4つの規定の文字集合が指示されているものと仮定し、これを指示するシーケンスは一切省略する。
この4バッファのうちG0に指示されるものは常にASCII相当のコードと決められており、残り3つは各国語によって異なる。何があるかは言語環境依存とする。
指示が不要な代わり、後から別の文字集合を指示することもできない。
そして、左の図形文字表には常にG0、右の図形文字表には常にG1が呼び出されているものとし、呼び出すシーケンスも一切省略する。
もしG2やG3の文字集合を使う時にはSS2(8/14)やSS3(8/15)を併用し一文字だけ右の図形文字表に呼び出す手法を用いる。このような手法を取るため、EUCではエスケープシーケンスを一切使わずにASCIIともう一言語を共存させることができる。
| 文字集合 | G0 | G1 | G2 | G3 |
|---|---|---|---|---|
| 日本語 (0208) | JIS X 0201 英数 | JIS X 0208 漢字 | JIS X 0201 カタカナ | JIS X 0212 補助漢字 |
| 日本語 (0213) | JIS X 0201 英数 | JIS X 0213 漢字 | JIS X 0201 カタカナ | JIS X 0213 補助漢字 |
| 支那語 筒体字 | ASCII | GB 2312 | ||
| 台湾語 繁體字 | ASCII | CNS 11643-1 | CNS 11643-2 | CNS 11643 その他の面 |
| 朝鮮語 | ASCII | KS X 1001 |
EUCは日本・支那・朝鮮など、漢字文字などを利用する言語圏で多く利用されている。そして日本語EUC(EUC-JP)も、その一種である。
日本語EUCのことを「UJIS」と俗称することがあるが、これは過去通産省(現在の経済産業省)主導で進められ、結局実現しなかったΣプロジェクトでそう呼んでいたことに由来している。
日本語のEUC-JPは慣例によるが、朝鮮語のEUC-KRはRFC 1557で、支那語のEUC-CNはRFC 1922でそれぞれ規定される。
EUCの長所の一つとして、ISO-2022-JP(JUNETコード)とは異なり、文字列の中のある1バイトを見れば、それが1バイト文字か、2バイト以上の文字の一部か判別が付けられる点がある。
この特徴は1バイト英数文字と日本語文字の混じった文書を処理するようなソフトウェアを作りやすくしており、このためUNIXの日本語化には日本語EUCがよく使われてきた。
またエスケープシーケンスが不要なので、英語と日本語が混じるような文書を計算機内にファイルとして保存しておく場合もファイルの容量が小さくて済むほか、モードを管理する必要がないため英語のソフトウェアの日本語化も容易に可能である。
ちなみにSS2/SS3の後でGRを使うことは当初ISO/IEC 2022に違反する恐れもあったが、その後ISO/IEC 2022が改訂され、問題がなくなった。
一方、短所としてはASCII文字とせいぜいもう一ヶ国語の混在しかできない点で、例えばASCII文字とJIS漢字と支那語漢字の混ざった文書を、EUCで表現することは出来ない。このため図書館の蔵書管理システム(蔵書の題名は3ヶ国語以上ありうる)のように、多国語を混在させる必要がある用途には向いていない。
そんなこともあってか、現在ではUNIX環境でも徐々にUTF-8が普及しはじめているようである。
EUC-JP(日本語EUC)を例とする。
具体的には、ASCII文字はそのまま、JIS X 0208漢字は2バイトのそれぞれの最上位ビットを1に変えたもので表わしJIS X 0201カナ(通称半角カナ)は最上位ビットを1にした上で、前に8/14を付けて表わすことになる。
例えば、0$阿ア(アはJIS X 0201カナのアとする)の場合、3/0 2/4 11/0 10/4 8/14 11/1、のように表現されることになる。
3/0 2/4 11/0 10/4 8/14 11/1 ~~~ ~~~ ~~~~~~~~~ ~~~~~~~~~ 0 $ 阿 ア
0$阿アのうち、0と$は良いとして、まず阿である。阿はJIS X 0208の漢字であり、これはバッファG1に指示されていて、かつGRに呼び出されている。これがEUC-JPの標準状態である。
さてGRの文字は、コードの最上位ビットを1にするだけで良い。従ってそのようにして用いることにする。まず阿が16区04点にあり、ISO-2022-JPでは各々に0x20を足して0x3024(3/0 2/4)で表現される。この各バイトに0x80を足すと0xb0a4(11/0 10/4)となり、これがEUC-JPにおける阿を指す符号となる。
次にJIS X 0201カナのアである。EUC-JPではJIS X 0201カナはG2に存在するので、用いるときには1文字ずつSS2(8/14)を使用してGRへ呼び出すことになる。
まずアの文字コードはJIS X 0201においては3/1である。これがGRに呼ばれるので、0x80(8/0)を足すと11/1になる。SS2が先行するので、結果としてこのアは、8/14 11/1という2バイトで表現されるわけである。