首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ASCII -编码点与字符编码

ASCII -编码点与字符编码
EN

Stack Overflow用户
提问于 2017-11-04 23:48:49
回答 1查看 1K关注 0票数 2

我发现了一篇有趣的文章“字符代码问题教程”(http://jkorpela.fi/chars.html#code),它解释了“字符代码”/“代码点”和“字符编码”这两个术语。

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

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

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

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

如果我总结一下这一点,我有以下步骤在ASCII中对字符进行编码:

  1. 为每个字符指定一个数字(代码点)(例如A->65)
  2. 用具有相同值的字节对字符进行编码(例如,0100 0001)

所以字母A和B应该是

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

我的问题是:

为什么在ASCII中代码点和编码的分离?ASCII只有一个编码。因此,至少对于ASCII,我不清楚为什么要完成中间步骤(映射到整数)。直接编码,如

A -> 0100 0001 B -> 0100 0010

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

EN

回答 1

Stack Overflow用户

发布于 2017-11-05 04:49:19

你是对的。每个概念不一定需要特定编码的可识别实现。但是,在讨论字符集和编码时,区分所有的概念是很好的。

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

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

电脑化文本的基本规则:使用写入文件或流的编码读取。表示文本的字节必须伴随来自声明、标准、约定、规范、…的编码知识。。

ASCII中有128个编码点。大多数情况下,ASCII是不正确的。要求提供ASCII的说明或更正。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47116818

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档