JIS X 0208について調査してみた(3)
前回までは、
- 漢字用7ビット符号
- 漢字用8ビット符号
- 国際基準版・漢字用7ビット符号
- 国際基準版・漢字用8ビット符号(EUC-JPの一部)
まで確認しまして、次に行きたい所なのですが、
EUC-JPが「JIS X 0208」をベースにしているので、そちらも同時に確認します。
EUC-JP
「EUCーJP」は、Extended UNIX Code Packed Format for Japaneseの略で、
UNIX上で日本語を扱うために生み出された、8ビットの2バイト文字コード。(シングルシフトは制御文字なので計算に入れていない。)
国際基準版ISO/IEC 646を(ASCII)をGL領域で、「JIS X 0208」の漢字集合をGR領域で用いるので、
「JIS X 0208」の「国際基準版・漢字用8ビット符号」と同様になる。
しかし、「EUC-JP」は、「JIS X 0201」の片仮名用図形文字集合と、「JIS X 0212」の補助漢字も使えるので
「EUC-JP」が「JIS X 0208」を包含している(サブセットとしている)。
従って、「EUC-JP」のGR領域では、以下の文字集合を切り替える必要が出てくる。
- JIS X 0208 漢字集合(G1)
- JIS X 0201 片仮名用図形文字集合(G2)
- JIS X 0212 補助漢字(G3)
「JIS X 0208」の漢字集合は、予めGR領域に呼び出されている。(ロッキングシフトされてる?)
「JIS X 0201」片仮名用図形文字集合をGR領域に呼び出すときは、シングルシフト(SS2)を用いる。
「JIS X 0212」の補助漢字をGR領域に呼び出すときには、シングルシフト(SS3)を用いる。
いずれのシングルシフトも、次の1文字だけ文字集合を切り替える。
従って、見た目は3バイトに見えるが、シングルシフトは制御文字なので、文字自体は2バイトという事になる。
ここまでは、Wikipediaなどで確認できる情報なのだけど、
ここから先を「EUC-JP」の規格書などを参考して調査しようと思ったのですが・・・
どれがどれかワカラネエェェェ・・・・
色々調べたのですが、そもそもEUC自体に歴史があり、ここを調べてるだけでかなりの時間が経過しておりました。
そして、一番気になったのが、そもそも「EUC-JP」ってどういう規格なの?ってことでした。
これに関しては、EUCという規格があり、それの日本語ローカライズ版が日本語EUCと呼ばれていて、
さらにその中で「JIS X 0208」がベースになっているものが「EUC-JP」と呼ばれているものらしいです。
http://ja.wikipedia.org/wiki/Extended_Unix_Code
他にも色々と気になる部分があったのですが、「JIS X 0208」自体の調査から外れすぎるので後の記事にしたいと思います。
これは今回調査するべきじゃなかったなー、規模がデカすぎた・・・
資料だけをメモ
- UI-OSF-USLP 共同技術資料 日本語EUCの定義と解説 http://euc.jp/i18n/euc-jp.txt
- UI-OSF 日本語環境実装規約(WEB上には見つからない、、、たぶんこれがEUC-JP)
- IANA charset http://www.iana.org/assignments/character-sets
- UNIX SYSTEM V リリース 4 日本語環境共通規約(当然だけど、もはや売ってない!)
ラテン文字・漢字用7・8ビット符号
とりあえず、一旦、EUC(日本語EUC、EUC-JPなどなど)は忘れて次の符号化方式を調べてみます。
こちらは、「JIS X 0201」のラテン文字用図形文字集合と「JIS X 0208」の漢字集合を用いる場合。
これも、当然のことながら重複する文字があるので、
JIS X 0201で規定され図形文字と同じ図形文字は用いてはならない。
ただし、これまでの慣用的なり用と互換を目的としてだけ、附属書5表2に規定する文字をJIS X 0201で規定される文字とはことなった図形文字として用いてもよい。
「JIS X 0208」7.3 JIS X 0201のラテン文字と同時に用いる場合の符号より引用
となっており、国際基準版の時と似ている。
ちなみに、国際基準版(ISO/IEC 646)と「JIS X 0208」の違いは、
92番の文字にバックスラッシュ ('\') の替わりに円記号 ('¥') が、126番にチルダ ('~') の替わりにオーバーライン ('‾') が割り当てられている。
Wikipedia JIS X 0201 より引用 http://ja.wikipedia.org/wiki/JIS_X_0201
となっております。
ラテン文字・漢字用7ビット符号
7ビット符号なので、GR領域は存在しません。
なので、この場合は、両方の文字集合をGL領域に割当て、いつものようにシフトアウト(SO)、シフトイン(SI)によって文字集合を切り替えて運用します。
- CL領域には、JIS X 0211のC0集合を割り当てる。
- GL領域には、次の図形文字集合を割り当てる。
「JIS X 0208」7.3.1 ラテン文字・漢字用7ビット符号より引用
こちらも、国際基準版の時とあまり違いがありません。
ラテン文字・漢字用8ビット符号
8ビット符号なので、2つの文字集合をそれぞれ、GL領域、GR領域に割り当てて運用します。
- CL領域には、JIS X 0211のC0集合を割り当てる。
- GL領域には、ラテン文字用図形文字集合を割り当てる。
- CR領域には、JIS X 0211のC1集合を割り当てるか又は何も割り当てないかのいずれかとする。
- GR領域には、漢字集合を割り当てる。
- CR領域にJIS X 0211のC1集合を割り当てない場合、CR領域は空き領域とし、他の図形文字を割当ててはならない。
「JIS X 0208」7.3.2 ラテン文字・漢字用8ビット符号より引用
さて、これで残りは、
- シフト符号化文字集合(Shift_JIS)
- RFC 1468符号化文字集合(ISO-2022-JPに近い)
となりましたが、両方とも内容が多くなりそうなので、個別に調査していく予定でございます。