首先,你为什么写这篇文章?

最近在写Http协议栈的时候,涉及到CRLF控制字符的编写,发现自己对CRLF和rn的关系不太了解,所以决定详细研究一下; 在查阅资料时,遇到了UTF-8和ASCII 的问题。

1.ASCII码

ASCII(美国信息交换标准代码)由 128 个字符组成。 它是一种基于拉丁字母的计算机编码系统。 主要用于显示现代英语。 其对应的国际标准是ISO/IEC 646。

unicode编码转换器_unicode编码_unicode编码转换

ASCII 码表

ASCII 是从电报码发展而来的。 该标准的第一个版本于1963年发布。最后一次更新是在1986年。到目前为止,共有128个字符:

1.1

(ASCII)是ASCII码的扩展版本,将ASCII码从7位扩展到8位,从128个字符扩展到256个字符,因此可以部分支持西欧语言。

1.2 转义字符

ASCII码表中的转义字符是一种常规写法,是以反斜杠开头的特殊字符序列,其作用是告诉计算机如何显示和输入控制字符。

unicode编码转换器_unicode编码_unicode编码转换

33个控制字符和相应的转义字符

转义字符的起源可以追溯到电传打字机和电传打字设备的使用。

在这些设备中,许多字符由多个部分组成,需要多次击键才能输入。 例如,换行符通常需要按 Enter 和换行键,而退格字符则需要按 Back 键。 为了简化这个过程,开发了一些规则来简化这些字符的输入,这些规则最终成为 ASCII 转义字符的标准。

转义字符并不是ASCII控制字符的某种编码方式,而是一种常规的写法。 当转义字符(如rn)输入计算机时,计算机会自动将转义字符替换为CRLF控制字符。

下面是用Java语言编写的测试程序。 当计算机遇到rn时,计算机自动将其替换为CRLF控制字符,每个控制字符占用一个字节

unicode编码转换器_unicode编码_unicode编码转换

转义字符会自动替换为回车符和换行符。 2. 编码

()翻译为通用代码、统一字符代码、统一字符编码,是信息技术领域的行业标准。 它对世界上大多数书写系统进行组织和编码,使计算机能够以统一的字符集处理和显示文本。 它不仅减轻了不同编码系统之间切换转换的麻烦,还为乱码问题提供了跨平台的解决方案。

由非营利组织 ( ) 组成的联盟维护,该联盟正在努力让该标准取代现有的字符编码方案,这些方案的编码空间有限且不适合多语言环境。 它与通用字符集ISO/IEC 10646标准一起制定,也以书籍的形式出版。 它仍在更新中,每个新版本都会添加更多新角色。 最新版本是2023年9月发布的15.0.0,已包含超过14万个字符。

编码是二进制字符集,字符占用2~3个字节。 目前分为17组进行编辑,每组称为一个平面,每个平面有65536个码点,目前只使用了几个平面。

因此,有足够的编码空间可以容纳世界上所有的符号,并且每个符号都被赋予一个唯一的代码,这是名副其实的万能代码。

unicode编码转换_unicode编码_unicode编码转换器

字符平面映射3、UTF-8编码

UTF-8的英文全称是(8-bit),它是UTF-8的实现方式之一,也是目前互联网上应用最广泛的编码实现方式。

为什么UTF-8成为互联网上使用最广泛的编码方式?

前面提到,编码是二进制字符集,它只规定了字符的二进制编码,但没有规定这些二进制编码应该如何存储。

例如:

因此,如何在计算机中存储代码存在以下两个问题:

在这种情况下,UTF-8应运而生。 UTF-8最大的特点是变长编码方式,用1到4个字节来表示一个符号,并且字节长度根据不同的符号而变化。

UTF-8的编码规则很简单,只有两条:

编码规则总结如下表,其中字母x表示可用的编码位:

Unicode符号范围        |   UTF-8编码方式
(十六进制)             |
  (二进制)
----------------------+----------------------------------
0000 0000 ~ 0000 007| 0xxxxxxx
0000 0080 ~ 0000 07FF |
 110xxxxx 10xxxxxx
0000 0800 ~ 0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx
0001 0000 ~ 0010 FFFF |
 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

为什么UTF-8编码最多占用4个字节?

我们之前了解到有 17 个编码平面,所有这些平面最多可以使用 3 个字节来表示。 但为什么 UTF-8 编码最多使用 4 个字节呢?

这是由UTF-8编码的编码规则决定的。 对于码位U+10000到U+范围内的字符,UTF-8编码使用4个字节来表示。

Unicode符号范围        |   UTF-8编码方式
(十六进制)             |  (二进制)
----------------------+----------------------------------
0001 0000 ~ 0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

在:

使用四个字节的优点是可以为将来的字符保留更多的编码空间。 这是因为,这是一个不断发展的标准,每年都会添加新的字符。 如果所有字符仅使用三个字节来表示,那么当标准中添加更多字符时,编码空间将不足。 因此,使用四个字节来表示这些字符可以确保将来的字符能够被正确编码。

参考

ASCII:

:

字符平面映射:

%E5%AD%97%E7%AC%A6%E5%B9%B3%E9%9D%A2%E6%98%A0%E5%B0%84

UTF-8:

ISO/IEC 646 ASCII:

ISO/IEC 10646:

ascii 代码:

编码表:

ASCII 和 UTF-8:

= 结束 =

文章首发于公众号“科技图库”。 如果文章对您有帮助,请关注我的公众号。

unicode编码转换器_unicode编码转换_unicode编码

好了,今天的主题就讲到这里吧,不管如何,能帮到你我就很开心了,如果您觉得这篇文章写得不错,欢迎点赞和分享给身边的朋友。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注