我发现了一篇有趣的文章“关于字符代码问题的教程”(http://jkorpela.fi/chars.html#code),它解释了术语“字符代码”/“代码点”和“字符编码”。
前者只是一个分配给一个字符的整数。例如65到字符A.字符编码定义了如何通过一个或多个字节表示这样的代码点。
对于好的旧ASCII,autor说:“ASCII标准指定的字符编码非常简单,对于代码编号不超过255的任何字符代码,最明显的一个:每个代码编号显示为具有相同值的八位字节。“
所以65这是A的代码点将被编码为1000 0001.
因为我在ASCII中有127个字符,所以有127个代码点,每个代码点总是用一个字节编码。
如果我总结一下,我有以下步骤来编码ASCII字符:
因此,对于字母A和B,它将是
A - > 65 - > 1000 0001 B - > 66 - > 1000 0010
我的问题是:
为什么在ASCII中分离代码点和编码? ASCII只有一种编码。所以至少对于ASCII来说,我不清楚为什么要完成中间步骤(映射到整数)。像
这样的直接编码A - > 1000 0001 B - > 1000 0010
也可能吗?如果我对ASCII字符有多种编码,那么分离是合理的,但只有一种编码形式对我来说没有意义。
答案 0 :(得分:0)
实际上,你可以认为ASCII有两种编码,一种是7位,一种是8位。使用7位以及在字节的第8位具有奇偶校验位的方案。 Unicode因许多编码而着名,包括UTF-8,UTF-16和UTF-32。
缺少一个术语:代码单元。编码将代码点映射到代码单元序列。代码单位是固定大小的整数。您可能知道,大于8位的整数具有字节顺序(也就是字节顺序)。这导致UTF-16和UTF-32具有大端和小端变体。
计算机化文本的基本规则:使用编写文件或流的编码进行读取。表示文本的字节必须附有编码知识,这些知识来自声明,标准,惯例,规范.......
ASCII中有128个代码点。大多数时候提到ASCII,这是不正确的。询问说明ASCII或更正的规范。