文字符号化方式

文字符号化方式 (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-JPEUC-JP、Shift_JISなどが代表的なCESです。

  • - ISO-2022-JP: JIS X 0208の区点番号を2バイトで表現し、エスケープシーケンスを用いて他の文字集合(ASCIIJIS X 0201)に切り替えることができます。
  • - Shift_JIS: JIS X 0208文字集合を、複雑な計算式を用いて2バイトで表現します。

Unicodeにおける文字符号化



Unicodeでは、CESをより詳細に、文字符号化形式(CEF)とバイト直列化の2段階に分けて規定しています。

  • - CEF (Character Encoding Form): Unicodeスカラ値(U+0000~U+10FFFF)を符号単位列に変換します。UTF-8UTF-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以外の文字符号化



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

関連用語



もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。