文字コードを説明するのに、CCSとCESだけでは不足である理由

かつて文字コードを説明するのに符号化文字集合/Coded Character Set (CCS) 、と文字符号化方式/Character Encoding Scheme(CES)に分ける方法が流行しました。しかし、現在ではこの2つでは不十分であるようです。詳細はUTR#17 “Unicode Character Encoding Model” (http://www.unicode.org/reports/tr17/) をご参照。 また、@nalsh さんによる、以下の記事も参照。「Character Encoding Model」 http://d.hatena.ne.jp/nurse/20050720
13
小形克宏 @ogwata

符号化文字集合/Coded Character Set (CCS) と文字符号化方式/Character Encoding Scheme(CES)について、調べたことをつぶやきます。

2011-12-30 00:37:04
小形克宏 @ogwata

以下、符号化文字集合/Coded Character Set は CCS と、文字符号化方式/Character Encoding Scheme は CES と省略。

2011-12-30 00:38:55
小形克宏 @ogwata

CCSを文字集合、CESをバイト列で表現する方法というように考えるやり方がある。たとえば次を参照。「書体関係 Wiki」http://t.co/ZsQG5LOp

2011-12-30 00:44:21
小形克宏 @ogwata

このうち「コラム 文字集合と文字コード」で次のような記述がある。〈例えば JIS X 0208 というのは第一水準、第二水準の漢字と仮名や記号などの非漢字が含まれる CCS で、それに対する CES として ISO-2022-JP、EUC-JP、シフト JIS などが存在する。〉

2011-12-30 00:45:38
小形克宏 @ogwata

この引用でわかるとおり、これはCCSを文字集合、CESをバイト列で表現する方法というように、分けて説明した記述の一例といえるだろう。

2011-12-30 00:48:11
小形克宏 @ogwata

ところが、このコラム冒頭で、CCSを次のように定義している。〈有限の文字の集合に対する文字と数値*11の対応規則〉。引用部分が文字集合としての側面を重視したものであるのに対し、この定義は「対応規則」の方を重視している。つまり、定義と引用にずれがあるように思える。

2011-12-30 00:50:56
小形克宏 @ogwata

文字コードをCCSとCESの2つの側面に分け、前者を文字集合、後者をバイト表現の方法とする考え方は、便利で分かりやすい。この考え方をとることにより、たとえばシフトJISはCESであって、多くのベンダーが独自のCCSを策定したために文字化けが発生した――というような書き方ができる。

2011-12-30 00:54:06
小形克宏 @ogwata

しかし、原典に当たると、どこにもCCSが文字集合などとは書いていない。

2011-12-30 00:54:48
小形克宏 @ogwata

CCSとCESの定義は、直接的にはRFC 2130 “The Report of the IAB Character Set Workshop” でなされている。

2011-12-30 00:55:52
小形克宏 @ogwata

RFC 2130 “The Report of the IAB Character Set Workshop” http://t.co/6GFEFx0k

2011-12-30 00:56:32
小形克宏 @ogwata

3.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:27
小形克宏 @ogwata

3.2.1: Coded Character Set Coded Character Set(CCS)は、抽象的な文字のセットから整数のセットへのマッピングである。

2011-12-30 00:59:00
小形克宏 @ogwata

3.2.2: Character Encoding Scheme

2011-12-30 01:00:36
小形克宏 @ogwata

A 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:42
小形克宏 @ogwata

3.2.2: Character Encoding Scheme(CES)は、Coded Character Set、またはいくつかのCoded Character Setからオクテットのセットへのマッピングである。

2011-12-30 01:01:44
小形克宏 @ogwata

この定義は、ぼくとっては難解なものだ。考えるほど、どちらも同じようなものに思えてくる。

2011-12-30 01:02:36
成瀬 @nalsh

@ogwata シングルバイトからマルチバイトへの流れやその過渡的な理解を把握していないと腑には落ちづらいでしょうね

2011-12-30 01:05:14
小形克宏 @ogwata

CCSの定義にいう、「整数のセット」とは16進ではないもの、つまりビット組合せであるように読める。一方のCESの「オクテットのセット」に登場するオクテットとは、「バイト」のより厳密な言い方だ。

2011-12-30 01:05:36
小形克宏 @ogwata

たとえばISO-2022JPのような、7ビット単位で2つ組み合わせて表現する規格でのバイトではなく、UTF-8のような8ビット単位のものを、とくに呼ぶ言い方が「オクテット」だ。

2011-12-30 01:08:31
小形克宏 @ogwata

ではCCSの「ビット組合せのセット」と、CESの「8ビット単位のセット」の違いは?

2011-12-30 01:09:53
成瀬 @nalsh

@ogwata 「ビット組み合わせのセット」と言い換えちゃダメです、言い換えられるのはCCSの一部に過ぎません

2011-12-30 01:12:15
小形克宏 @ogwata

@nalsh ごねんなさい、ちょっと意味が分かりません。

2011-12-30 01:15:49
小形克宏 @ogwata

ここで興味深いのは、このRFC 2130 の定義は、どうやらISO/IEC 10646やISO/IEC 2022など公的標準における定義とは、微妙に異なるらしいこと。

2011-12-30 01:17:02
小形克宏 @ogwata

たとえば、前出「書体関係 Wiki」の注13には、次のような記述がある。〈公的標準での定義に従えば、EUC-JP, シフト JIS は文字と数値の1対1対応なので CCS ともなる。一方、ISO-2022-JP は CCS に該当しない。〉

2011-12-30 01:18:03
成瀬 @nalsh

@ogwata 「CCSの定義にいう、「整数のセット」とは16進ではないもの、つまりビット組合せであるように読める」が誤りでしょう。「整数」が8bit未満だとは一言も言ってませんし、「組」は1バイトも含みますから

2011-12-30 01:18:47
1 ・・ 5 次へ