长期以来困扰我的是,太多的软件使用术语“字符集”和“编码”作为同义词。
当人们引用unicode的“编码”时,它们总是表示一个规则集,用于将unicode字符表示为字节序列(例如ASCII或UTF-8)。这似乎是合理而直观的。想法是您使用指定的规则集将这些字符“编码”为字节。
由于这些规则集有时仅提供对所有unicode字符的某些子集进行“编码”的能力,因此您可能会想到,“字符集”(“字符集”的缩写)仅表示一组unicode字符,而无需考虑如何这些字符被编码。因此,编码将暗含一个字符集(像ASCII这样的编码,仅具有编码128个字符的规则,将与那些128个字符的字符集相关联),但是字符集不必暗含一种编码(例如,UTF-8,UTF -16和UTF-32都是不同的编码,但是可以编码相同的字符集。
但是-这是我的问题的症结-“字符集”一词在现实世界中的使用与该词的构造所暗示的不匹配。它几乎总是用来表示“编码”。
例如:
charset
HTML中的属性用于指定编码Charset
Java中的s是编码charset
和character sets
MySQL再次是编码
这种对语言的好奇(滥用)年龄有多大?“直觉”的反直觉定义是如何形成的?它可能是从一个时间起源当有真正的是,在实践中,人物的使用编码与套之间有一个一对一映射他们的支持?还是有一些特别有影响力的标准或规范决定了这个词的定义?
charset
是Unicode标准,所以虽然它可能不是“一对一映射”,但文档所需的字符往往会迫使选择编码。但是我没有时间研究这个词的实际历史……