文字符号化方式 (Character Encoding Scheme, CES) について
文字符号化方式(CES)とは、
コンピュータが
文字を扱う上で、
文字集合(符号化
文字集合)で定義された
文字に対応する非負
整数値を、実際のデータ列(通常はバイト列)に変換する方式のことです。これは、
文字符号化体系や
文字符号化スキームとも呼ばれます。
符号化文字集合とCESの関係
符号化
文字集合とCESの関係を理解するために、
JIS X 0208を例に説明します。
JIS X 0208は、
文字の集合と各
文字に割り当てられた区点番号(1区1点~94区94点)と、それに対応するビット列から構成されています。例えば、「亜」という漢字は16区1点であり、対応するビット列は2バイトで表現されます。
CESは、このような符号化
文字集合を基に、他の符号化
文字集合と組み合わせたり、計算によって変換したりする方式です。また、特定の符号化
文字集合とCESの組み合わせによって、
文字を表現する
文字列を符号化表現と呼びます。
1つの符号化
文字集合に対して複数のCESが適用できる場合、符号化表現も複数存在します。
JIS X 0208の場合、
ISO-2022-JP、
EUC-JP、Shift_JISなどが代表的なCESです。
Unicodeでは、CESをより詳細に、
文字符号化形式(CEF)とバイト直列化の2段階に分けて規定しています。
- - CEF (Character Encoding Form): Unicodeスカラ値(U+0000~U+10FFFF)を符号単位列に変換します。UTF-8、UTF-16、UTF-32が代表的なCEFであり、それぞれ符号なし8ビット整数、16ビット整数、32ビット整数を符号単位として使用します。
- - バイト直列化: CEFで得られた符号単位列を、ファイルの読み書きや通信のためにバイト列に変換する手続きです。この際、バイト順序(エンディアン)を指定または記述する方法が規格化されています。
Unicodeで定められたCEFとCESの組み合わせは複数存在し、
UTF-16のように同じ名称のCEFとCESを区別する場合、「
UTF-16符号化形式」「
UTF-16符号化スキーム」と呼ぶことがあります。一般的に
UTF-16と呼ばれるものは、
UTF-16符号化形式に対応する3つのCESの総称です。
Unicode以外の
文字符号化でも、原理的にはCEFとCESを区別できますが、ほとんどの場合8ビット
整数が符号単位として使われるため、区別する意味は少ないです。例えば、Shift_JISの
文字データを扱うプログラムでは、8ビット
整数のバイト列をそのまま処理するため、バイト直列化の処理は特に必要ありません。
キャラクタセット
文字符号化方式と関連して、キャラクタセットという用語も存在します。これは、
文字の集合に符号化を組み合わせた概念で、特定の
文字をどのように表現するかを指します。
まとめ
文字符号化方式は、
コンピュータで
文字を扱うための重要な仕組みです。符号化
文字集合、CES、CEF、バイト直列化といった概念を理解することで、
文字化けなどの問題を解決する上で役立ちます。
参考資料
- - JIS X 0202:1998『情報技術 - 文字符号の構造及び拡張法』
- - The Unicode Standard, Version 5.0
- - RFC 2978 IANA Charset Registration Procedures
関連用語