文字コードを説明するのに、CCSとCESだけでは不足である理由
符号化文字集合/Coded Character Set (CCS) と文字符号化方式/Character Encoding Scheme(CES)について、調べたことをつぶやきます。
2011-12-30 00:37:04以下、符号化文字集合/Coded Character Set は CCS と、文字符号化方式/Character Encoding Scheme は CES と省略。
2011-12-30 00:38:55CCSを文字集合、CESをバイト列で表現する方法というように考えるやり方がある。たとえば次を参照。「書体関係 Wiki」http://t.co/ZsQG5LOp
2011-12-30 00:44:21このうち「コラム 文字集合と文字コード」で次のような記述がある。〈例えば JIS X 0208 というのは第一水準、第二水準の漢字と仮名や記号などの非漢字が含まれる CCS で、それに対する CES として ISO-2022-JP、EUC-JP、シフト JIS などが存在する。〉
2011-12-30 00:45:38ところが、このコラム冒頭で、CCSを次のように定義している。〈有限の文字の集合に対する文字と数値*11の対応規則〉。引用部分が文字集合としての側面を重視したものであるのに対し、この定義は「対応規則」の方を重視している。つまり、定義と引用にずれがあるように思える。
2011-12-30 00:50:56文字コードをCCSとCESの2つの側面に分け、前者を文字集合、後者をバイト表現の方法とする考え方は、便利で分かりやすい。この考え方をとることにより、たとえばシフトJISはCESであって、多くのベンダーが独自のCCSを策定したために文字化けが発生した――というような書き方ができる。
2011-12-30 00:54:06CCSとCESの定義は、直接的にはRFC 2130 “The Report of the IAB Character Set Workshop” でなされている。
2011-12-30 00:55:52RFC 2130 “The Report of the IAB Character Set Workshop” http://t.co/6GFEFx0k
2011-12-30 00:56:323.2.1: Coded Character Set A Coded Character Set (CCS) is a mapping from a set of abstract characters to a set of integers.
2011-12-30 00:58:273.2.1: Coded Character Set Coded Character Set(CCS)は、抽象的な文字のセットから整数のセットへのマッピングである。
2011-12-30 00:59:00A Character Encoding Scheme (CES) is a mapping from a Coded Character Set or several coded character sets to a set of octets.
2011-12-30 01:00:423.2.2: Character Encoding Scheme(CES)は、Coded Character Set、またはいくつかのCoded Character Setからオクテットのセットへのマッピングである。
2011-12-30 01:01:44CCSの定義にいう、「整数のセット」とは16進ではないもの、つまりビット組合せであるように読める。一方のCESの「オクテットのセット」に登場するオクテットとは、「バイト」のより厳密な言い方だ。
2011-12-30 01:05:36たとえばISO-2022JPのような、7ビット単位で2つ組み合わせて表現する規格でのバイトではなく、UTF-8のような8ビット単位のものを、とくに呼ぶ言い方が「オクテット」だ。
2011-12-30 01:08:31ここで興味深いのは、このRFC 2130 の定義は、どうやらISO/IEC 10646やISO/IEC 2022など公的標準における定義とは、微妙に異なるらしいこと。
2011-12-30 01:17:02たとえば、前出「書体関係 Wiki」の注13には、次のような記述がある。〈公的標準での定義に従えば、EUC-JP, シフト JIS は文字と数値の1対1対応なので CCS ともなる。一方、ISO-2022-JP は CCS に該当しない。〉
2011-12-30 01:18:03@ogwata 「CCSの定義にいう、「整数のセット」とは16進ではないもの、つまりビット組合せであるように読める」が誤りでしょう。「整数」が8bit未満だとは一言も言ってませんし、「組」は1バイトも含みますから
2011-12-30 01:18:47