Encoding ASCII-码点与字符编码

Encoding ASCII-码点与字符编码,encoding,character-encoding,ascii,Encoding,Character Encoding,Ascii,我发现了一篇有趣的文章“字符代码问题教程”(A tutorial on character code issues)(),其中解释了术语“字符代码”/“代码点”和“字符编码” 前者只是一个分配给字符的整数。例如,65到字符A。字符编码定义了如何通过一个或多个字节来表示这样的代码点 对于好的旧ASCII,作者说:“ASCII标准规定的字符编码非常简单,对于任何代码编号不超过255的字符代码来说,最明显的是:每个代码编号都以具有相同值的八位字节表示。” 因此,A的代码点65将被编码为0100 000

我发现了一篇有趣的文章“字符代码问题教程”(A tutorial on character code issues)(),其中解释了术语“字符代码”/“代码点”和“字符编码”

前者只是一个分配给字符的整数。例如,65到字符A。字符编码定义了如何通过一个或多个字节来表示这样的代码点

对于好的旧ASCII,作者说:“ASCII标准规定的字符编码非常简单,对于任何代码编号不超过255的字符代码来说,最明显的是:每个代码编号都以具有相同值的八位字节表示。”

因此,A的代码点65将被编码为0100 0001

因为我有127个ASCII字符,所以有127个代码点,其中每个代码点总是由一个字节编码

如果我总结一下,我有以下步骤来用ASCII编码字符:

  • 为每个字符分配一个数字(代码点)(例如a->65)
  • 使用具有相同值的字节(例如0100 0001)对字符进行编码
  • 所以字母A和B应该是

    A->65->0100 0001 B->66->0100010

    我的问题是:

    为什么要将代码点和ASCII编码分开?ASCII只有一种编码。因此,至少对于ASCII,我不清楚为什么要执行中间步骤(映射到整数)。一种直接编码方式,如

    A->0100 0001 B->0100010


    是否也有可能?如果一个ASCII字符有多个编码,那么分隔是合理的,但是只有一种编码形式对我来说没有意义。

    你说得对。对于特定的编码,每个概念不一定需要一个可识别的实现。但在一般讨论字符集和编码时,最好将所有概念区分开来

    实际上,你可以考虑ASCII有两个编码,一个是7位,一个是8位。7位与在字节的第8位具有奇偶校验位的方案一起使用。Unicode因具有多种编码而著名,包括UTF-8、UTF-16和UTF-32

    缺少一个术语:代码单元。编码将代码点映射到一系列代码单元。代码单位是固定大小的整数。您可能知道,大于8位的整数具有字节顺序(也称为endianness)。这导致UTF-16和UTF-32具有大端和小端变体


    计算机文本的基本规则:用文件或流写入时使用的编码读取。表示文本的字节必须附带编码知识,编码知识来自声明、标准、约定、规范等



    ASCII码中有128个代码点。大多数时候提到ASCII码是不正确的。要求说明ASCII或更正

    你说得对。对于特定的编码,每个概念不一定需要一个可识别的实现。但在一般讨论字符集和编码时,最好将所有概念区分开来

    实际上,你可以考虑ASCII有两个编码,一个是7位,一个是8位。7位与在字节的第8位具有奇偶校验位的方案一起使用。Unicode因具有多种编码而著名,包括UTF-8、UTF-16和UTF-32

    缺少一个术语:代码单元。编码将代码点映射到一系列代码单元。代码单位是固定大小的整数。您可能知道,大于8位的整数具有字节顺序(也称为endianness)。这导致UTF-16和UTF-32具有大端和小端变体


    计算机文本的基本规则:用文件或流写入时使用的编码读取。表示文本的字节必须附带编码知识,编码知识来自声明、标准、约定、规范等



    ASCII码中有128个代码点。大多数时候提到ASCII码是不正确的。要求说明ASCII或更正

    因此,在像ASCII这样的单字节编码中,区分像65这样的代码点和相应的编码是没有好处的?如果ASCII是唯一的字符集,那么是的。但它从来不是唯一的角色集。这些概念具有不同的属性。例如,计算编码的代码点而不是字节值很有用。可以在字符集之间找到代码点,但比较代码单元会将其带到完全不同的级别。因此,在像ASCII这样的单字节编码中,区分像65这样的代码点和相应的编码是没有好处的?如果ASCII是唯一的字符集,那么是的。但它从来不是唯一的角色集。这些概念具有不同的属性。例如,计算编码的代码点而不是字节值很有用。可以在字符集上找到代码点,但比较代码单元会将其带到一个完全不同的级别。