编码入门

什么是编码及其工作原理?

计算机不能存储字母或其他任何东西 - 它存储位。位可以是 0 或 1(// - 因此这些格式称为二进制)。要使用这些位,需要一些规则来将位转换为某些内容。这些规则称为编码,其中 1/0 位的序列代表某些字符。8 位序列称为字节

编码像表一样工作,每个字符与特定字节相关。要以 ASCII 编码对某些内容进行编码,应该按照从右到左的条目进行编码,搜索与字符相关的位。要将一串位解码为字符,可以从左到右替换字母位。

字节可以用不同的格式表示:例如,二进制的 10011111 是八进制的 237,十进制的 159 和十六进制格式的 9F

不同编码之间有什么区别?

第一个字符编码,如 8 位时代之前的 ASCII,仅使用 8 位中的 7 位 .ASCII 用于编码英语,所有 26 个字母均为大写和小写形式,数字和大量标点符号。ASCII 无法涵盖所有​​ö-ß-é-å字母的其他欧洲语言 - 因此开发了使用字节的第 8 位覆盖另外 128 个字符的编码。

但是一个字节不足以表示超过 256 个字符的语言 - 例如中文。使用两个字节(16 位)可以编码 65,536 个不同的值。像 BIG-5 这样的编码将一串比特分成 16 比特(2 字节)的块来编码字符。多字节编码具有节省空间的优点,但是诸如查找子字符串,比较等操作的缺点都必须在执行此类操作之前将字符解码为 unicode 代码点(尽管有一些快捷方式,但是)。

另一种类型的编码是每个字符具有可变字节数 - 例如 UTF 标准。这些标准有一些单位大小, UTF-8 为 8 位,UTF-16 为 16 位,UTF-32 为 32 位。然后标准将一些位定义为标志:如果它们被设置,则单元序列中的下一个单元将被视为同一字符的一部分。如果它们没有设置,则该单元仅完全代表一个字符(例如英语仅占用一个字节,这就是为什么 ASCII 编码完全映射到 UTF-8)。

什么是 Unicode?

Unicode, 如果是一个巨大的字符集(用一种更容易理解的方式 - 一个表),有 1,114,112 个代码点,每个代码点代表特定的字母,符号或其他字符。使用 Unicode,你可以编写一个文档,其中包含理论上人们使用的任何语言。

*Unicode 不是一种编码 - 它是一组代码点。*有几种方法可以将 Unicode 代码点编码为位 - 例如 UTF-8,-16 和 -32。