私を長い間混乱させてきたのは、多くのソフトウェアが「charset」と「encoding」という用語を同義語として使用していることです。
人々がユニコードの「エンコーディング」に言及するとき、それらは常にユニコード文字をASCIIやUTF-8のようなバイトのシーケンスとして表すためのルールセットを意味します。これは合理的で直感的なようです。これは、指定したルールセットを使用して、これらの文字をバイトとして「エンコード」するという考え方です。
これらのルールセットは、すべてのユニコード文字の一部のサブセットを「エンコード」する機能しか提供しないことがあるので、「文字セット」の短縮形である「文字セット」は、ユニコード文字のセットを意味するだけで、これらの文字はエンコードされます。したがって、エンコーディングは文字セットを意味します(128文字のエンコードに関するルールのみを持つASCIIのようなエンコーディングは、それらの128文字の文字セットに関連付けられます)が、文字セットはエンコーディングを意味する必要はありません(たとえば、UTF-8、UTF) -16とUTF-32はすべて異なるエンコーディングですが、同じ文字セットをエンコードできます)。
それでも-そして、これが私の質問の核心です-「charset」という単語の実際の用法は、単語の構成が意味するものと一致しません。ほとんどの場合、「エンコード」を意味するために使用されます。
例えば:
charset
HTML の属性は、エンコーディングを指定するために使用されますCharset
Javaのsはエンコーディングですcharset
sとcharacter sets
MySQLでは、これもエンコーディングです。
この好奇心の強い(乱用)言語の使用は何歳ですか?この「直感的ではない」「文字セット」の定義はどのようにして生まれましたか?それはおそらく、実際に、使用中のエンコーディングとそれらがサポートする文字セットとの間に1対1のマッピングが実際にあった時代に由来するのでしょうか?それとも、この単語の定義を規定する特に影響力のある標準や仕様はありましたか?
charset
Unicode標準よりも古いため、「1対1のマッピング」ではなかったかもしれませんが、ドキュメントに必要な文字はエンコーディングの選択を強制する傾向がありました。しかし、私は単語の実際の歴史を研究する時間はありません...