文字コードを説明するのに、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
インターネット Unicode 文字コード 文字 character glyph
7668view 6コメント
13
小形克宏 @ogwata
符号化文字集合/Coded Character Set (CCS) と文字符号化方式/Character Encoding Scheme(CES)について、調べたことをつぶやきます。
小形克宏 @ogwata
以下、符号化文字集合/Coded Character Set は CCS と、文字符号化方式/Character Encoding Scheme は CES と省略。
小形克宏 @ogwata
CCSを文字集合、CESをバイト列で表現する方法というように考えるやり方がある。たとえば次を参照。「書体関係 Wiki」http://t.co/ZsQG5LOp
小形克宏 @ogwata
このうち「コラム 文字集合と文字コード」で次のような記述がある。〈例えば JIS X 0208 というのは第一水準、第二水準の漢字と仮名や記号などの非漢字が含まれる CCS で、それに対する CES として ISO-2022-JP、EUC-JP、シフト JIS などが存在する。〉
小形克宏 @ogwata
この引用でわかるとおり、これはCCSを文字集合、CESをバイト列で表現する方法というように、分けて説明した記述の一例といえるだろう。
小形克宏 @ogwata
ところが、このコラム冒頭で、CCSを次のように定義している。〈有限の文字の集合に対する文字と数値*11の対応規則〉。引用部分が文字集合としての側面を重視したものであるのに対し、この定義は「対応規則」の方を重視している。つまり、定義と引用にずれがあるように思える。
小形克宏 @ogwata
文字コードをCCSとCESの2つの側面に分け、前者を文字集合、後者をバイト表現の方法とする考え方は、便利で分かりやすい。この考え方をとることにより、たとえばシフトJISはCESであって、多くのベンダーが独自のCCSを策定したために文字化けが発生した――というような書き方ができる。
小形克宏 @ogwata
しかし、原典に当たると、どこにもCCSが文字集合などとは書いていない。
小形克宏 @ogwata
CCSとCESの定義は、直接的にはRFC 2130 “The Report of the IAB Character Set Workshop” でなされている。
小形克宏 @ogwata
RFC 2130 “The Report of the IAB Character Set Workshop” http://t.co/6GFEFx0k
小形克宏 @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.
小形克宏 @ogwata
3.2.1: Coded Character Set Coded Character Set(CCS)は、抽象的な文字のセットから整数のセットへのマッピングである。
小形克宏 @ogwata
3.2.2: Character Encoding Scheme
小形克宏 @ogwata
A Character Encoding Scheme (CES) is a mapping from a Coded Character Set or several coded character sets to a set of octets.
小形克宏 @ogwata
3.2.2: Character Encoding Scheme(CES)は、Coded Character Set、またはいくつかのCoded Character Setからオクテットのセットへのマッピングである。
小形克宏 @ogwata
この定義は、ぼくとっては難解なものだ。考えるほど、どちらも同じようなものに思えてくる。
成瀬 @nalsh
@ogwata シングルバイトからマルチバイトへの流れやその過渡的な理解を把握していないと腑には落ちづらいでしょうね
小形克宏 @ogwata
CCSの定義にいう、「整数のセット」とは16進ではないもの、つまりビット組合せであるように読める。一方のCESの「オクテットのセット」に登場するオクテットとは、「バイト」のより厳密な言い方だ。
小形克宏 @ogwata
たとえばISO-2022JPのような、7ビット単位で2つ組み合わせて表現する規格でのバイトではなく、UTF-8のような8ビット単位のものを、とくに呼ぶ言い方が「オクテット」だ。
小形克宏 @ogwata
ではCCSの「ビット組合せのセット」と、CESの「8ビット単位のセット」の違いは?
成瀬 @nalsh
@ogwata 「ビット組み合わせのセット」と言い換えちゃダメです、言い換えられるのはCCSの一部に過ぎません
小形克宏 @ogwata
@nalsh ごねんなさい、ちょっと意味が分かりません。
小形克宏 @ogwata
ここで興味深いのは、このRFC 2130 の定義は、どうやらISO/IEC 10646やISO/IEC 2022など公的標準における定義とは、微妙に異なるらしいこと。
小形克宏 @ogwata
たとえば、前出「書体関係 Wiki」の注13には、次のような記述がある。〈公的標準での定義に従えば、EUC-JP, シフト JIS は文字と数値の1対1対応なので CCS ともなる。一方、ISO-2022-JP は CCS に該当しない。〉
成瀬 @nalsh
@ogwata 「CCSの定義にいう、「整数のセット」とは16進ではないもの、つまりビット組合せであるように読める」が誤りでしょう。「整数」が8bit未満だとは一言も言ってませんし、「組」は1バイトも含みますから
残りを読む(88)

コメント

loufock @loufock 2011年12月30日
ちゃんと読んでないけど、次のような話に見える。ACR:対象となる文字集合。CCS:同一視の定義(包摂規準)。CEF:文字と数値の実装上の対応。CES:文字列表現の規則(Shiftjisのエスケープシークエンスなど)。
小形克宏 @ogwata 2012年1月4日
その後のツィートを追加しました。まだ怪しいところもありますが、ひとまず現在の理解です。
小形克宏 @ogwata 2012年1月4日
loufockさん、コメントありがとうございます。ただ、CEFとCESの違いが説明できていないと思います。まらシフトJISはエスケープシーケンスと無関係です。
loufock @loufock 2012年1月4日
@ogwata ShiftjisじゃなくてISO2022ですね。お恥ずかしい。
loufock @loufock 2012年1月4日
@ogwata URF#17によると、CEFはその定義から、文字ごとのmappingであり、エスケープシークエンスのような機構を含みません。文字ごとの対応表がCEF、文字列の表現規則がCESということだと理解しています。
loufock @loufock 2012年1月4日
@ogwata 今読み返したらISO2022などの話はすでになさっていたことに気づきました。ちゃんと読まずに不十分な理解で書いて申し訳ありません。
ログインして広告を非表示にする
ログインして広告を非表示にする