encoding / converter / character set / CES

これらは厳密には全部異なる概念と思うわけだが…特に charset とかエンコーディングって用語はコンテキストごとに微妙に異なる意味で用いられていると思う。

厳密には以下のような意味の違いがあると思うわけだけど、実態はどうなんでしょう…?>識者^^;

encoding
符号化。encoding scheme は符号化方式であり、特定文字集合に依存しない。
(追記)そして、純粋に個々の符号化方式だけを表す統一された用語はないらしい。ISO-2022 はそうだと思うけど、シフトJIS なんかは「いわゆるシフトJIS方式」である、と。少なくとも Shift_JIS 方式という使い方は無いそうです。

converter
変換器。異なる encoding 間の変換を行う処理。

character set
文字集合。コード化されていない文字の集まり。とはいえ便宜上 JIS なら面/句点コードで特定は可能。(追記)>coded-character-set として区別される。

CES
character encoding scheme/syntax。これが定義上一番よく分からない…。IANA の character sets として登録された名称を指すと思っているけれど、これは character sets と言いながらエンコーディングスキームとサポートする文字集合の組み合わせに名前を付けたもの、と思う。


何が気になるって、たとえば Shift_JIS というのはエンコーディングスキーム名でもありながら、上記仮定義における CES 名称でもあるってあたりWindows-31J とかを説明するときにすげー気持ち悪い。

さらに、同一のエンコーディングスキームに対するコンバータが複数あるわけで、言ってみれば(特定エンコーディング、たとえば対 Unicode との)コンバータは CES と一対一に存在しうる。実際 Java では SJIS/MS932/CP943C などの Shift_JISシフトJIS エンコーディングスキームに対するコンバータを持っている。

上記に対応する CES である Shift_JIS/Windows-31J/Cp943c などはエンコーディングスキーム的には皆 Shift_JISシフトJIS だが、コンバータ的には相互の完全な互換性が無い。これは扱う文字集合だけではなく変換先の Unicode 値にもぶれがあるという意味で。

はぁ…ここまででとんでもない勘違い、ありますかねぇ…?
文字の世界には相変わらず疎い、このあたりはまだまだ上澄み部分の知識なのに…-_-。