通过在操作系统中实际操作,学习和理解 Unicode 编码相关知识

我们通过在操作系统里进行一些简单的联系,可以加深对 Unicode 编码这些基础知识的理解和记忆。

Windows10 操作系统下,新建一个记事本文件,输入 123ABCabc

默认的 encoding 格式为 UTF8:

通过在操作系统中实际操作,学习和理解 Unicode 编码相关知识_第1张图片

通过在操作系统中实际操作,学习和理解 Unicode 编码相关知识_第2张图片

使用 winhex 这款 16进制文件编辑器打开该记事本文件:

通过在操作系统中实际操作,学习和理解 Unicode 编码相关知识_第3张图片

看到正文区域的 31 32 33 41 42 43 61 62 63。这些数字代表什么含义?

UTF8 (Universal Character Set/Unicode Transformation Format) 是针对 Unicode 的一种可变长度字符编码。它可以用来表示 Unicode 标准中的任何字符,而且其编码中的第一个字节仍与 ASCII 相容,使得原来处理 ASCII 字符的软件无须或只进行少部分修改后,便可继续使用。

ASCII 是美国标准信息交换代码(American Standard Code for Information Interchange)的缩写, 为美国英语通信所设计。它由 128 个字符组成,包括大小写字母、数字0-9、标点符号、非打印字符(换行符、制表符等4个)以及控制字符(退格、响铃等)组成。

ascii 对照表可以从这个链接获得。

其中数字 1,2,3 的 UTF8(ASCII) 编码分别为 31,32和33:

通过在操作系统中实际操作,学习和理解 Unicode 编码相关知识_第4张图片

大写的 A B C 的 UTF8(ANSI) 编码为 41 42 43,小写字母为 61 62 63:

通过在操作系统中实际操作,学习和理解 Unicode 编码相关知识_第5张图片

ENCODING 改成 ANSI:

winhex 中的内容不变。

记事本的 Encoding 改成 UTF8 with bom 之后:

winhex 文件内容的前部,多了三个EF BB BF
通过在操作系统中实际操作,学习和理解 Unicode 编码相关知识_第6张图片

首先,BOM 的含义是 byte order mark,BOM(byte order mark)是为 UTF-16 和 UTF-32 准备的,用于标记字节序(byte order)。微软在 UTF-8 中使用 BOM 是因为这样可以把 UTF-8 和 ASCII 等编码明确区分开。

可以把这个 EF BB BF 理解成一种特殊的标记符,用于显式表明该文件的编码为 UTF-8:

https://en.wikipedia.org/wiki...

通过在操作系统中实际操作,学习和理解 Unicode 编码相关知识_第7张图片

相应的,在记事本里将 encoding 改成 UTF-16(BE) 之后,文件头就变成了 FE FF,并且以前的 31 32 33 变成了双字节 00 31 00 32 00 33:

下面再试试中文。

在记事本里输入一个中文“汪”:
汪 UTF8

通过在操作系统中实际操作,学习和理解 Unicode 编码相关知识_第8张图片

E6 B1 AA 这是汉字 汪 的三字节 Unicode 编码,来自网站

通过在操作系统中实际操作,学习和理解 Unicode 编码相关知识_第9张图片

AA 占一个字节,8位:1010 1010
通过在操作系统中实际操作,学习和理解 Unicode 编码相关知识_第10张图片

UTF16-LE 6A6C

通过在操作系统中实际操作,学习和理解 Unicode 编码相关知识_第11张图片
3A 代表冒号:
通过在操作系统中实际操作,学习和理解 Unicode 编码相关知识_第12张图片

22 代表引号:
通过在操作系统中实际操作,学习和理解 Unicode 编码相关知识_第13张图片

更多Jerry的原创文章,尽在:"汪子熙":
通过在操作系统中实际操作,学习和理解 Unicode 编码相关知识_第14张图片

你可能感兴趣的