EUC

読み:イーユースィー
外語:EUC: Extended UNIX Code , Enhanced UNIX Code
品詞:名詞,+規格

ISO/IEC 2022のサブセットで、8単位の拡張法を用いた符号系のこと。

UNIX系OSの国際化対応のために開発された文字コードの符号化方法(CES)で、1985(昭和60)年、日本UNIXシステム諮問委員会の試案に基づき、米AT&TがMNLS(Multinational Language Supplement)として規定したもの。

各国の文字コードの符号化は、この枠組みで規定される。

EUCはG0〜G3の各バッファに予め4つの規定の文字集合が指示されているものと仮定し、これを指示するシーケンスは一切省略する。

この4バッファのうちG0に指示されるものは常にASCII相当のコードと決められており、残り3つは各国語によって異なる。何があるかは言語環境依存とする。

指示が不要な代わり、後から別の文字集合を指示することもできない。

そして、左の図形文字表には常にG0、右の図形文字表には常にG1が呼び出されているものとし、呼び出すシーケンスも一切省略する。

もしG2やG3の文字集合を使う時にはSS2(8/14)やSS3(8/15)を併用し一文字だけ右の図形文字表に呼び出す手法を用いる。このような手法を取るため、EUCではエスケープシーケンスを一切使わずにASCIIともう一言語を共存させることができる。

使用例

文字集合G0G1G2G3
日本語
(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
補助漢字
支那語
筒体字
ASCIIGB 2312  
台湾語
繁體字
ASCIICNS 11643-1CNS 11643-2CNS 11643
その他の面
朝鮮語ASCIIKS 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バイトで表現されるわけである。