文字符号化方式

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動: 案内, 検索

文字符号化方式(もじふごうかほうしき、character encoding scheme、CES)とは、符号化文字集合文字に対応付けた非負整数値を、実際にコンピュータが利用できるデータ列(通常、バイト列)に変換する符号化方式

文字符号化体系文字符号化スキームとも訳す。英語ではcharacter coding scheme (CCS) とも言う(訳は同じ)。文字について述べていることが明確なときは、単に符号化方式、またIBMの用語ではコード化体系 (ES: encoding scheme) などとも言う。

この用語はUnicodeIETF標準などで用いているが、ISO/IECJISの標準では用いず「符号化文字集合の構造」あるいは「文字符号の構造及び拡張法」として扱われている。この用語の定義は、世界の文字コード規格とは必ずしも合致しないことがある。

目次

[編集] 符号化文字集合と文字符号化方式

符号化文字集合とCESの関係を示すため、JIS X 0208を例にとる。なお、話を簡単にするため、附属書は無視する。

JIS X 0208は、符号化文字集合であり、文字の表と、各文字に対応付けられた1区1点~94区94点の番号(区点)と、それに対応したビット組合せからなる。例えば、「亜」という漢字の区点番号は16区1点であり、対応するビット組合せは x0110000 x0100001 の2バイトである (xは呼出し先がGLであれば0、GRであれば1)。こうした符号化文字集合について、他の符号化文字集合と組み合わせたり、計算によって変形したりする方式を、文字符号化方式 (CES) と呼ぶことがある。また、特定の符号化文字集合とCESとの組み合わせによって実現する文字列の表現を符号化表現と呼ぶことがある (符号化表現はキャラクタセットとほぼ同義である)。

1つの符号化文字集合に適用できるCESが複数ある場合、符号化表現も1つではない。JIS X 0208の場合、主要なものとして、ISO-2022-JP (RFC1468符号化表現)、EUC-JPShift_JISがある。

ISO-2022-JPは、JIS X 0208の文字に対応付けた1~94の区点を、それぞれ2116~7E16の範囲の1バイト、計2バイトで表す。さらに、エスケープ・シーケンスを使い、ASCIIJIS X 0201など別の文字集合に切り替えることができる。このように、1つのCESが使う符号化文字集合は、1つとは限らない。

ほとんどの場合、ISO-2022-JPのように符号化文字集合とバイト列の対応は単純であるが、常にそうだとは限らない。Shift_JISでは、JIS X 0208文字集合を、複雑な計算式により、2バイトで表現できる000016~FFFF16のうちJIS X 0201と競合しない長方形の領域に詰め込んでいる。

[編集] 文字符号化形式と文字符号化スキーム

Unicode標準では、文字符号化スキーム(: Character Encoding Scheme、略語:CES)を、文字符号化形式(: Character Encoding Form、略語:CEF)と、バイト直列化等の2つの段階に分けて標準化している[1]

符号化文字集合 符号化形式
(CEF)
符号化スキーム
(CES)
Unicode文字集合 UTF-8 UTF-8
UTF-16 UTF-16BE
UTF-16LE
UTF-16
UTF-32 UTF-32BE
UTF-32LE
UTF-32

Unicodeの符号化文字集合では、各文字にU+0000..U+10FFFFのUnicodeスカラ値を対応付けている。CEFは、このUnicodeスカラ値を符号単位列に変換する。UnicodeのCEFには、UTF-8UTF-16UTF-32があり、これらが使う符号単位はそれぞれ、符号なし8ビット整数(ここで言う符号とは正負のこと)、符号なし16ビット整数、符号なし32ビット整数である。これらの文字符号化形式はプログラムにおける文字の内部表現として実装される。

しかし、情報交換のためファイルの読み書きや通信を行う場合には、符号単位列をバイト列にする必要があり、8ビット以外の符号単位列をバイト列にするには、バイト順序(エンディアン)を決める必要がある。そのためCESでは、CEFに加え、バイト直列化の手続きを決める、つまり、エンディアンを指定するかまたはエンディアンを記述する方法を規格化している。(各CESのバイト直列化の具体的な内容については、UTF-16#符号化スキームを参照)

Unicode標準で定められたCEFとCESは、表のものがある(ただし、Unicode技術標準[2]SCSU (UTS 6) が、Unicode技術報告[2]UTF-EBCDIC (UTR 16) とCESU-8 (UTR 26) が、Unicode技術ノート[3]BOCU-1 (UTN 6) が、その他、ISO/IEC標準やRFCで、Unicode文字集合を使ったCEFやCESを規格化している)。同じ名称のCEFとCESがあり、これらを区別するときは、「UTF-16符号化形式」「UTF-16符号化スキーム」のように呼ぶ。一般にUTF-16と呼ばれるものは、UTF-16符号化形式に対応する3つのCESの総称である。なお、UTF-8符号化形式とUTF-8符号化スキームは実質的に同じものだが、便宜上、分けている。

Unicode以外でも、原理的にはCEFとCESを区別して論ずることができる。しかし、殆どの場合8ビット整数を符号単位とするため、UTF-8の場合と同様に区別する意味は少ない。たとえば、Shift_JISの文字データを扱うプログラムは、8ビット整数を符号単位とするマルチバイト文字の文字データの処理を行っているため、ファイルの読み書きや通信などでバイト直列化処理をあらためて行うことはない。

[編集] キャラクタセット

MIME ではキャラクタセット英語: charset または character set)という概念が用いられる。

キャラクタセットは「オクテットの並びを文字の並びに変換する方式」と定義される[4]。MIME で実現する電子メールメッセージなどの処理を主眼に置いた概念である。ネットワーク上の符号化表現をなんらかの文字の集合に写像するための変換方式が互いに異なれば、それらは互いに異なるキャラクタセットである。言い換えると、文字符号化方式と符号化文字集合とをまとめたものがキャラクタセットである。このため、一般にキャラクタセットでは、符号化表現と文字とが一対一に対応するとは限らない。

インターネット上で用いることのできるキャラクタセットの登録と公開は IANA が行っている(「外部リンク」参照)。

日本工業規格 (JIS) では、MIME でのキャラクタセット概念を追認する形で、いくつかのキャラクタセットを符号化表現として規格化している。また、MIMEより後に制定されたXMLにおいては、文字符号化の宣言としてcharsetではなくencodingという用語を用いている。

IANAのキャラクタセットによって識別される概念を、Unicodeでは文字マップ (英語: Character Map; CM) という。Unicodeの文字マップは抽象文字レパートリに含まれる文字の組合わせから直列化バイト列への写像として定義されている。一つのCCSCEF及びCESを暗黙に含む単純文字マップは、概念上の文字から符号単位さらにバイトへの写像である。複合的なCESを含む複合文字マップには、一つ以上のCCSとCEFが含まれる。この場合の、文字マップの抽象文字レパートリは、関連する符号化文字集合で扱われるレパートリの和集合である。

文字マップは、IBMの文字データ表現体系 (CDRA) においてはコード化文字セット識別コード (英語: coded character set identifier; CCSID) によって識別される。文字マップはcharsetやキャラクタセットの他に、(広義の)コード・ページ (英語: code page)、CHARMAPPOSIX国際化機能の文字集合記述ファイル)などと呼ばれることもある。

多くの場合、UTF-16BEのように、文字マップと文字符号化方式の両方に同じ名称が使用される。たいていはそのような使用法が文脈によって明確なときに単純文字マップについて行われる。

[編集] 脚注

  1. ^ 本節の用語の日本語表記は次に従った。Unicode Terminology English - Japanese”. Unicode, inc. 2009年12月31日閲覧。
  2. ^ a b 詳細は次を参照。About Unicode Technical Reports - Types of Unicode Technical Reports: UTR, UTS, UAX, Unicode, Inc.
  3. ^ 詳細は次を参照。About Unicode Technical Notes, Unicode, Inc.
  4. ^ Freed and Postel. 参考文献, ‘1.3. Charset’, p.1.

[編集] 参考資料

  • JIS X 0202:1998『情報技術 - 文字符号の構造及び拡張法』(ISO/IEC 2022:1994 Information technology - Character code structure and extension techniques 第4版の国際一致規格) 1998年、日本規格協会。
  • The Unicode Standard, Version 5.0、2006年11月、Addison-Wesley。ISBN 0321480910
  • RFC 2978 IANA Charset Registration Procedures (『IANA キャラクタセット登録手続き』) N. Freed 他著、2000年10月。

[編集] 関連項目

[編集] 外部リンク

個人用ツール
名前空間
変種
操作
案内
ヘルプ
ツールボックス