文字符号化方式
出典: フリー百科事典『ウィキペディア(Wikipedia)』
文字符号化方式(もじふごうかほうしき、character encoding scheme、CES)とは、符号化文字集合で文字に対応付けられた非負整数値を、実際にコンピュータが利用できるデータ列(通常、バイト列)に変換する符号化方式。
文字符号化体系、文字符号化スキームとも訳す。英語ではcharacter coding scheme (CCS) とも言う(訳は同じ)。文字について述べていることが明確なときは、単に符号化方式などとも言う。
この用語はIETFなどで用いられるが、ISO/IECでは用いない。この用語の定義などは、世界の文字コード規格とは必ずしも合致しないことがある。
目次 |
[編集] 符号化文字集合と文字符号化方式
符号化文字集合と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-JP、Shift_JISがある。
ISO-2022-JPは、JIS X 0208の文字に対応付けられた1~94の区点を、それぞれ2116~7E16の範囲の1バイト、計2バイトで表す。さらに、エスケープ・シーケンスを使い、ASCII、JIS X 0201など別の文字集合に切り替えることができる。このように、1つのCESが使う符号化文字集合は、1つとは限らない。
ほとんどの場合、ISO-2022-JPのように符号化文字集合とバイト列の対応は単純であるが、常にそうだとは限らない。Shift_JISでは、JIS X 0208文字集合を、複雑な計算式により、2バイトで表現できる000016~FFFF16のうちJIS X 0201と競合しない長方形の領域に詰め込んでいる。
[編集] 符号化文字形式と文字符号化方式
Unicodeでは、CESを、文字符号化形式 (Character Encoding Form; CEF) と、バイト直列化(シリアライズ)の2つの段階に分けて規格化している。
符号化文字集合 | 符号化形式 (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のスカラ値が対応付けられている。CEFは、このスカラ値を符号単位列に変換する。UnicodeのCEFには、UTF-8、UTF-16、UTF-32があり、これらが使う符号単位はそれぞれ、符号なし8ビット整数(ここで言う符号とは正負のこと)、符号なし16ビット整数、符号なし32ビット整数である。
しかし、8ビット以外の符号単位列をバイト列にするには、バイト順序(エンディアン)を決める必要がある。CESでは、CEFに加え、バイト直列化の手続きを決める、つまり、エンディアンを指定するかまたはエンディアンを記述する方法を規格化している。(各CESのバイト直列化の具体的な内容については、UTF-16#符号化方式を参照)
Unicode標準で定められたCEFとCESは、表のものがある(ただし他に、ISOやRFCが、Unicode文字集合を使ったCEFやCESを規格化している)。同じ名称のCEFとCESがあり、これらを区別するときは、「UTF-16符号化形式」「UTF-16符号化方式」のように呼ぶ。一般にUTF-16と呼ばれるものは、UTF-16符号化形式に対応する3つのCESの総称である。なお、UTF-8符号化形式とUTF-8符号化方式は実質的に同じものだが、便宜上、分けられている。
Unicode以外でも、原理的にはCEFとCESを区別して論ずることができる。しかし、通常は1つのCEFにたいし実際に使われるCESは1種類しかないので、区別する意味は少ない。たとえば、Shift_JISは2バイトの符号単位を使うので、Shift_JIS符号化形式に対し、異なるバイト直列化をする複数のCESが考えられる。しかし実際には、Shift_JISのバイト直列化はリトルエンディアンに決まっているため、CESは1種類しかない。
[編集] キャラクタセット
MIME ではキャラクタセット(charset または character set)という概念が用いられる。
キャラクタセットは「オクテットの並びを文字の並びに変換する方式」と定義される。MIME で実現される電子メールメッセージなどの処理を主眼に置いた概念である。ネットワーク上の符号化表現をなんらかの文字の集合に写像するための変換方式が互いに異なれば、それらは互いに異なるキャラクタセットである。言い換えると、文字符号化方式と符号化文字集合とをまとめたものがキャラクタセットである。このため、一般にキャラクタセットでは、符号化表現と文字とが一対一に対応するとは限らない。
日本工業規格 (JIS) では、MIME でのキャラクタセット概念を追認する形で、いくつかのキャラクタセットを符号化表現として規格化している。
インターネット上で用いることのできるキャラクタセットの登録と公開は IANA が行っている(「外部リンク」参照)。
[編集] 参考資料
- 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月。
[編集] 関連項目
[編集] 外部リンク
- IANA: Character Sets (IANA に登録されているキャラクタセットの情報一覧)