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

举报
汪子熙 发表于 2022/10/03 09:19:28 2022/10/03
【摘要】 我们通过在操作系统里进行一些简单的联系,可以加深对 Unicode 编码这些基础知识的理解和记忆。Windows10 操作系统下,新建一个记事本文件,输入 123ABCabc默认的 encoding 格式为 UTF8:使用 winhex 这款 16进制文件编辑器打开该记事本文件:看到正文区域的 31 32 33 41 42 43 61 62 63。这些数字代表什么含义?UTF8 (Unive...

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

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

默认的 encoding 格式为 UTF8:

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

看到正文区域的 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:

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

ENCODING 改成 ANSI:

winhex 中的内容不变。

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

winhex 文件内容的前部,多了三个EF BB BF

首先,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/Byte_order_mark#Byte_order_marks_by_encoding

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

下面再试试中文。

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

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

AA 占一个字节,8位:1010 1010

UTF16-LE 6A6C


3A 代表冒号:

22 代表引号:

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。