ISO/IEC 2022
出典: フリー百科事典『ウィキペディア(Wikipedia)』
ISO 2022(より正式にはISO/IEC 2022)は
を規定するISO規格である。JISの対応規格はJIS X 0202。
すべての文字に8bitを使うISO 8859文字符号化方式と異なり、ISO 2022 符号化方式は1文字に通常1バイトか2バイトを使う可変サイズの文字符号化方式である。いくつかの文字符号化方式がISO 2022の機構を使っている。たとえば、ISO-2022-JPは日本語で広く使われている文字符号化方式であり、いわゆる「JISコード」というのもこれを指すことが一般的である。
目次 |
[編集] 概要
ギリシャ語、ロシア語、アラビア語、もしくはヘブライ語のような、ラテンアルファベットに基づかない多くの言語や語族は、コンピュータ上では歴史的に8ビットの拡張ASCII符号化方式(ISO 8859を含む)で表現されてきた。東アジア言語、とくに中国語、日本語、および韓国語の表記は、8ビットのコンピュータバイトで表現可能な範囲をはるかに超えた数の文字を使い、言語別の2バイト文字集合によって初めてコンピュータ上で表現された。
ISO 2022はこれら両方の問題に立ち向かうための技術として開発された。複数の文字集合に含まれる文字を単一の文字符号化方式で表現し、大きな文字集合を表現する。
ISO 2022はISO 646に基づいているので、多くのISO 646の特性を持ち合わせている。たとえば、各バイトの最上位桁ビットはいかなる意味も持たない。これにより、7ビットの通信チャネルを通してISO 2022を伝送することは(ISO 646と同様)容易である(この7ビットの特性はEUC符号化の基本原理にも利用されている)。
複数の文字集合を表現するために、ISO 2022の文字符号化方式は後続の文字の文字集合を指定するエスケープシーケンスを含んでいる。エスケープシーケンスはISOで登録され、通常ASCIIのESCAPE文字(十六進数の1B、十進数の33)で始まる3文字からなる。これらの文字符号化方式ではデータの正しい解釈が最後に出現したエスケープシーケンスに依存するため、データを先頭から順番に処理する必要がある。
ISO 2022は、大きな文字集合を表現するために、1バイトが(空白と33個の制御文字に加えて)94個の図形(印字可能)文字を定義できるというISO 646の特性に基づいている。よって、2バイトを使って8836個(94×94)までの文字を表現できる。そして、3バイトを使って830584個(94×94×94)までの文字を表現できる。2バイト文字集合では、各文字の符号位置は通常区点と呼ばれる形式で区および区内の位置を指定する。
それゆえエスケープシーケンスはどの文字集合を使おうとしているか宣言するのみならず、これらの文字集合の特性をも知らせる。たとえば扱おうとしている符号化方式が 94-、8836-、もしくは 830584-文字(もしくは他のサイズ)のいずれであるかを伝える。
実際には、文脈や規約が特定国の文字集合を使うよう指定していれば、各国の文字集合を宣言するエスケープシーケンスは省略される場合がある。たとえば、ISO-2022-CNを定義しているRFC 1922では、エスケープシーケンスの代わりにASCII SHIFT文字の使用を許している。
ISO 2022の文字集合(とくにISO-2022-JP)はまだ広く使われているが、ほとんどの現代的な電子メールアプリケーションはUTF-8のようにより単純なUnicode文字符号化方式を使うよう変換されつつある。
[編集] ISO 2022の文字集合
ISO 2022の機構を使う文字符号化方式には以下のものが含まれる。
- ISO-2022-JP - 日本語の符号化方式として広く使われている。ASCIIで開始し、以下のエスケープシーケンスを含む
- ESC ( B ASCIIに切り替える (文字あたり1バイト)
- ESC ( J JIS X 0201-1976に切り替える (文字あたり1バイト)
- ESC $ @ JIS X 0208-1978に切り替える (文字あたり2バイト)
- ESC $ B JIS X 0208-1983に切り替える (文字あたり2バイト)
- ISO-2022-JP-1 - ISO-2022-JPと同じだが以下の1つのエスケープシーケンスを追加
- ESC $ ( D JIS X 0212-1990に切り替える (文字あたり2バイト)
- ISO-2022-JP-2 - ISO-2022-JPの多言語拡張。ISO-2022-JP-1と同じだが以下のエスケープシーケンスを追加
- ESC $ A GB 2312-1980に切り替える (文字あたり2バイト)
- ESC $ ( C KS X 1001-1992に切り替える (文字あたり2バイト)
- ESC . A SS2の直後をISO 8859-1に切り替えることを指示する (文字あたり1バイト)
- ESC . F SS2の直後をISO 8859-7に切り替えることを指示する (文字あたり1バイト)
- ISO-2022-JP-3 - ISO-2022-JPと同じだが以下の2つのエスケープシーケンスを追加
- ESC $ ( O JIS X 0213-2000の1面に切り替える (文字あたり2バイト)
- ESC $ ( P JIS X 0213-2000の2面に切り替える (文字あたり2バイト)
- ISO-2022-JP-2004 - ISO-2022-JP-3と同じだが以下の1つのエスケープシーケンスを追加
- ESC $ ( Q JIS X 0213-2004の1面に切り替える (文字あたり2バイト)
- ISO-2022-KR - 韓国語
- ESC $ ) C ASCIIのSHIFT文字でKS X 1001-1992に切り替えることを指示する (文字あたり2バイト)
- ISO-2022-CN - 中国語
- ESC $ ) A ASCIIのSHIFT文字でGB 2312-1980に切り替えることを指示する (文字あたり2バイト)
- ESC $ ) G ASCIIのSHIFT文字でCNS 11643-1992の1面に切り替えることを指示する (文字あたり2バイト)
- ESC $ * H SS2の直後をCNS 11643-1992の2面に切り替えることを指示する (文字あたり2バイト)
- ISO-2022-CN-EXT - ISO-2022-CNと同じだが以下の6つのエスケープシーケンスを追加
- ESC $ ) E ASCIIのSHIFT文字でISO-IR-165に切り替えることを指示する (文字あたり2バイト)
- ESC $ + I SS3の直後をCNS 11643-1992の3面に切り替えることを指示する (文字あたり2バイト)
- ESC $ + J SS3の直後をCNS 11643-1992の4面に切り替えることを指示する (文字あたり2バイト)
- ESC $ + K SS3の直後をCNS 11643-1992の5面に切り替えることを指示する (文字あたり2バイト)
- ESC $ + L SS3の直後をCNS 11643-1992の6面に切り替えることを指示する (文字あたり2バイト)
- ESC $ + M SS3の直後をCNS 11643-1992の7面に切り替えることを指示する (文字あたり2バイト)
[編集] 関連項目
[編集] 参考文献
- Lunde, Ken. CJKV日中韓越情報処理. オライリー・ジャパン, 2002. ISBN 4-87311-108-0.