1. 文字コードとは
「文字コード」とは、文字をコンピュータ上で扱うために、文字に番号(数値)を割り当てた仕組みのことで、文字を符号化して表現するための総称です。
厳密には「符号化文字集合(Coded Character Set, CCS)」と「文字符号化方式(Character Encoding Scheme, CES)」とあります。
2. 符号化文字集合(CCS)と文字符号化方式(CES)
「符号化文字集合(CCS)」とは、文字そのものに「番号(コードポイント)」を割り当てた集合のことです。
「文字符号化方式(CES)」とは、「符号化文字集合(CCS)」のコードポイントを、実際のバイト列として表現するためのルール(方式)のことです。
[符号化文字集合(CCS)と文字符号化方式(CES)の違い]
| 項目 | 符号化文字集合(CCS) | 文字符号化方式(CES) |
|---|---|---|
| 定義 | 文字とコードポイント(番号)の対応表 | コードポイントをバイト列に変換する方式 |
| 目的 | 「何の文字があるか」と「その番号は何か」を定義 | 「その番号をどうバイト列にするか」を定義 |
| 例 | Unicode, ASCII, JIS X 0208 | UTF-8, UTF-16, Shift_JIS, EUC-JP |
| 役割 | 抽象的な文字体系の定義 | 実際のデータ表現(バイト列)の方式 |
| 変換対象 | 文字 → 番号(コードポイント) | 番号 → バイト列(0と1) |
なお、システム開発の現場では「文字コード」という言葉は「文字符号化方式(CES)」を指すことが多いように思われます。
おそらく、最終的にコンピュータで表現されているバイト列(テキスト内のバイト列等)が、「符号化文字集合(CCS)」のコードポイントを実際のバイト列として表現した「文字符号化方式(CES)」になるからだと思います。
[符号化文字集合(CCS)の例]
| 名称 | 説明 |
|---|---|
| ASCII | 7bit 文字集合。0x00–0x7F。 |
| ISO 8859-1(Latin-1) | 西欧言語向け 8bit CCS。 |
| JIS X 0201 | 日本語の半角英数字・半角カナ集合。 |
| JIS X 0208 | 日本語の主要な漢字集合(2バイト)。 |
| JIS X 0213 | 追加漢字を含む日本語拡張集合。 |
| Unicode(UCS) | 世界中の文字を統一した巨大な CCS。UCS-2, UCS-4 という表記もここに分類。 |
[文字符号化方式(CES)の例]
| 名称 | 使用する符号化文字集合(CCS) | 説明 |
|---|---|---|
| UTF-8 | Unicode | 可変長1〜4バイトで Unicode をバイト化する方式。 |
| UTF-16 | Unicode | 2バイト(サロゲートで4バイト)で Unicode を表現。 |
| UTF-32 | Unicode | 4バイト固定長。 |
| Shift_JIS | JIS X 0201 + JIS X 0208(を前提として) | 日本語向け可変長エンコード方式。 |
| MS932(Windows-31J) | Shift_JIS系(JIS X 0201/0208 など) | Windows 独自の Shift_JIS 拡張エンコード方式。 |
| EUC-JP | JIS X 0201 + JIS X 0208 + JIS X 0212 | 日本語向け標準の EUC 方式。 |
| ISO-2022-JP | JIS X 0201/0208 | エスケープシーケンスで文字集合を切り替える方式。 |
| GBK / GB18030 | 中国語の各種 CCS | 中国語向け可変長の CES。 |
ASCIIコードは 「符号化文字集合(CCS)」に分類されます。
「1 文字=1 バイト」
「そのバイト値がコードポイントと同じ」
という 固定の表現しかないため「文字符号化方式(CES)」には分類されません。
参考文献
プログラマのための文字コード技術入門(ISBN978-4-7741-4164-0)
関連
【第2回】文字コードについて - ASCII、ISO/IEC 646 と JIS X 0201 -
以上