我们通过在操作系统里进行一些简单的联系,可以加深对 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 代表引号:

更多Jerry的原创文章,尽在:“汪子熙”:

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

  1. 详细图文演示——排除启动类故障以及Linux操作系统引导、运行级别和优化启动等相关知识

    详细图文演示--排除启动类故障以及Linux操作系统引导.运行级别和优化启动等相关知识 一.Linux操作系统引导过程 1.开机自检 2.MBR 引导 3.GRUB菜单 4.加载Linux内核 5.i ...

  2. alin的学习之路:加密相关知识(加密和解密,常见加密算法,消息验证码HMAC,数字签名)

    alin的学习之路:加密相关知识(加密和解密,常见加密算法,消息验证码HMAC,数字签名) 1. 加密和解密 1.1 加密的三要素 原始数据 加密操作: 明文 -> 密文 解密操作: 密文 -& ...

  3. Java学习笔记 0、计算机相关知识了解

    文章目录 前言 一.计算机基本知识 1.认识CPU 2.认识内存 二.三大定律 三.IT两大鼻祖 四.万维网 五.windows下的常用命令 六.各类语言及应用 七.各种进制数 四个进制介绍 原码.反 ...

  4. R中双表操作学习[转载]

    转自:https://www.jianshu.com/p/a7af4f6e50c3 1.原始数据 以上是原有的一个,再生成一个新的: > gene_exp_tidy2 <- data.fr ...

  5. 操作系统中PV操作实现进程同步与互斥问题(以苹果橘子问题为例)

    桌上有一空盘,允许存放一个水果.爸爸可向盘中放苹果,也可向盘中放桔子, 儿子专等吃盘中的桔子,女儿专等吃盘中的苹果.规定当盘空时,一次只能放一个水果供吃者取用, 请用P.v原语实现爸爸.儿子.女儿三个 ...

  6. 操作系统中PV操作之顾客理发师问题

    PV操作:对信号量进行相应操作 S:信号量 P:请求操作,相当于S=S-1:S>=0,进程继续进行 V:释放操作,相当于S=S+1,S>0,进程被唤醒 理发师问题 一个理发师,一把理发椅, ...

  7. Spring mvc 中 DispatcherServlet 的学习和理解

    上图表示当客户请求来到时,spring架构作出响应的流程,可以从图中看到看到请求分发的中心就是 DispatcherServlet 类,DispatcherServlet的任务是将请求发送给Sprin ...

  8. ADO学习(七)ADOX相关知识

    一.ADOX 概述 Microsoft? ActiveX? Data Objects Extensions for Data Definition Language and Security (ADO ...

  9. grasshopper_如何使用Google的Grasshopper编码应用程序来学习手机上的编码基础知识...

    grasshopper 什么是蚱hopper? (What is Grasshopper?) Grasshopper is an interactive education app for learn ...

最新文章

  1. “PC一哥”联想的这些年
  2. secureCRT按回车键全屏的解决方法
  3. php rsa加密实例,关于PHP语言的RSA加密实例讲解
  4. shell 中去掉末尾换行符
  5. 基于External-DNS的多集群Service DNS实践
  6. 苹果2020年全系展望:iPhone12不会去掉刘海但5G是必须的
  7. mysql添加字典子项_如何使用executemany在MySQL中插入Python字典列表
  8. java操作Excel之POI(4)利用POI实现数据的批量导出
  9. Log4j 配置的webAppRootKey参数问题
  10. Children’s Queue
  11. Atitit 资源清理之道与gc之道 gc算法 清理临时表 临时资源 使用的算法类型是 引用计数(reference counting),基于时间过期自动清理资源 1. 3.1. 从各种
  12. 如何更改通达OA附件的存储目录
  13. 基础篇:6)形位公差标注(GDT标准)-总章
  14. 十大编程语言的优劣对比简述
  15. 定时器+echarts运行时间太长导致内存溢出页面崩溃
  16. 2017陕西省网络空间安全技术大赛_Crypto_crypt1_Writeup
  17. Argis ArcToolbox-分割栅格,无结果**
  18. uniapp前端向后端发送请求时,出现跨域问题的解决方法与原理
  19. Kubernetes volumes简介
  20. linux cadaver 命令,(个人学习Linux经历)文本命令

热门文章

  1. Spring与mybatis整合---Mybatis学习笔记(十一)
  2. Base64加密---加密学习笔记(一)
  3. 从Storm到Flink,有赞五年实时计算效率提升实践
  4. except的实践经验
  5. Java遍历完数的一些思考
  6. 反思O2O演化的三个时代,大数据与智能化才是未来所在
  7. Android 工程的创建
  8. php http头设置相关信息
  9. 以前折腾的7zip图标
  10. ubuntu、fedora系统的启动|关闭管理器