見出し画像

EUC - UNIXと共に普及した文字コード

日本語の文字コードとしてポピュラーだったシフトJISの話あたりは以下に書いたのですが、それ以外にもUNIXな世界で標準であったEUCという文字コードがありました。

シフトJISって何が凄いの?

EUCという名前から想像できるかはわかりませんが、UNIXにおける拡張文字コードという意味で、1984年頃、当時、商用UNIXをライセンスしていたAT&Tが日本でのビジネスにあたり、日本語の文字コードを決める必要があって制定された文字コードです(日本が最初だったんですね、欧州諸国はどうしていたんだろう)。

Extended Unix Code

基本的には由緒正しいISO/IEC 2022の国際的な仕組みに準拠したもので、日本語だけではなく中国や韓国の文字に対しても同じ方法で拡張できるように決められています。シフトJISと同じように文字セットの切り替えコードを必要とせず、日本語に対する拡張方法としては、ASCIIで未定義とされている0xA1~0xFEであれば続くバイトと組にして2バイトでJISで規定されている文字として扱うというものです(2バイト目のコードは8ビット目を1にしたJISコード)。

JIS, EUC, SJIS の漢字コードについて

実は日本語EUCにも種類があって、初期の頃は半角カナはオプションであって、これが実装されていない処理系の方が多かったので(半角カナを無視したほうが正しいISOとも言えることも手伝って)、EUCでは半角カナが使えない、もしくは使ってはいけないと言われていました。実際のところ1バイト目が0x8Eであれば続くバイトを半角カナとして認識するのでちゃんと使えたはずだったのですけどね。ただどうして半角カナを出すのに2バイト必要なんだとシフトJIS派には嫌われていましたけど。

EUC-JP

このコードは原則としてUNIXが使われる環境でのみ使われていたのですが、インターネットが広まった時代、多くのサーバがUNIXであったためにネット上ではこちらが標準であるかのような扱いを受けていました。初期のインターネットに接続されていたクライアントもシフトJISを使うパソコンよりもUNIXで動くワークステーションが多かったころも影響しているのでしょう。なお大型機との接続の都合でしょうか、IBM拡張漢字は実装されていることがほとんどだったようです。

第 1 章 日本語 EUC コードセット 1 一覧

文字コード表 日本語EUC(euc-jp)

その後、JISの改定に合わせて微妙な修正が行われていますが、JIS第3水準とも言うべき補助漢字が制定されたのに合わせて1バイト目が0x8fの場合、その後ろ2バイト(合わせて3バイト)を最上位ビットを立てた補助漢字コードとすることで、これも収容しました。1文字で3バイトとなるのは嫌がられましたが、補助漢字を扱うことが出来なかったシフトJISに対するアドバンテージにはなりました。EUCの特徴というか良いところとして、第2バイト(以降)が必ず0xa1~0xfeの範囲にあることで、シフトJISで大いに問題となった第2バイトの0x5c”¥”問題が発生しなかったことです。

いま改めて「文字コード」について(その2)

インターネットの広がりとともに、日本語を扱う文字コードとしてJIS、シフトJIS、EUC-JPが併存し、一般的なバイナリを扱う方法としてMIMEという手法も決められ、電子メールでは題名はJIS(ISO)、本文はMIME、WEBではそれぞれの文字コードを明示するなど、プロトコルごとに文字コードの切替方法も異なっていました。ちょっと厄介だったのはファイルの中身の文字コードはともかくファイル名(URI名)に日本語が使われた時の扱いで、これがまた別な方法で決められるというなかなか混乱がありました。あまり配慮されずに日本語が使われることもあり「文字化け」という単語が飛び交っていました(文字化けの原因は文字コードだけではないのですが)。

こうした事態は欧米諸国ではあまり理解できないところもあったようです。そもそも同じ国の文字の中で片仮名、平仮名、漢字を使い分けるのは何故?から始まって、JISは日本の文字コードなのにどうしてキリル文字やギリシア文字が入っているのかも理解できず、そしていくつもの文字コードが併存している状態が続いているんだろうという訳です。何せ当時、インターネットに接続していたアジアの国では圧倒的に日本の利用者が多かった(他の国では英語を使う人だけが接続するという傾向も強かった)ので、多くの文字を使う文化の代表として、世界の文字コードを扱えるようにするという使命がありました。こうしてUNICODEの制定へと進んでいったわけです。

この対応で世界で通信の際に8ビットが正しく伝送できるよう(8ビットスルー)に整備され、文字の長さが必ずしも1バイトではなく複数のバイトを扱うようにいろいろプログラミング言語から呼び出すライブラリも整備されていきました。そして遂に統一した文字コードを使い世界中ですべての文字が扱える世の中が来ることを夢見ていました。ところがそれは一筋縄でいかず、また次の問題が起こってきたのですけどね。

さて、そろそろキーボードの方にも戻りますか。

#日本語文字コード #EUC #半角カナ #補助漢字 #0x5c問題

いいなと思ったら応援しよう!