通过在操作系统中实际操作,学习和理解 Unicode 编码相关知识
我们通过在操作系统里进行一些简单的联系,可以加深对 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 编码相关知识相关推荐
- 详细图文演示——排除启动类故障以及Linux操作系统引导、运行级别和优化启动等相关知识
详细图文演示--排除启动类故障以及Linux操作系统引导.运行级别和优化启动等相关知识 一.Linux操作系统引导过程 1.开机自检 2.MBR 引导 3.GRUB菜单 4.加载Linux内核 5.i ...
- alin的学习之路:加密相关知识(加密和解密,常见加密算法,消息验证码HMAC,数字签名)
alin的学习之路:加密相关知识(加密和解密,常见加密算法,消息验证码HMAC,数字签名) 1. 加密和解密 1.1 加密的三要素 原始数据 加密操作: 明文 -> 密文 解密操作: 密文 -& ...
- Java学习笔记 0、计算机相关知识了解
文章目录 前言 一.计算机基本知识 1.认识CPU 2.认识内存 二.三大定律 三.IT两大鼻祖 四.万维网 五.windows下的常用命令 六.各类语言及应用 七.各种进制数 四个进制介绍 原码.反 ...
- R中双表操作学习[转载]
转自:https://www.jianshu.com/p/a7af4f6e50c3 1.原始数据 以上是原有的一个,再生成一个新的: > gene_exp_tidy2 <- data.fr ...
- 操作系统中PV操作实现进程同步与互斥问题(以苹果橘子问题为例)
桌上有一空盘,允许存放一个水果.爸爸可向盘中放苹果,也可向盘中放桔子, 儿子专等吃盘中的桔子,女儿专等吃盘中的苹果.规定当盘空时,一次只能放一个水果供吃者取用, 请用P.v原语实现爸爸.儿子.女儿三个 ...
- 操作系统中PV操作之顾客理发师问题
PV操作:对信号量进行相应操作 S:信号量 P:请求操作,相当于S=S-1:S>=0,进程继续进行 V:释放操作,相当于S=S+1,S>0,进程被唤醒 理发师问题 一个理发师,一把理发椅, ...
- Spring mvc 中 DispatcherServlet 的学习和理解
上图表示当客户请求来到时,spring架构作出响应的流程,可以从图中看到看到请求分发的中心就是 DispatcherServlet 类,DispatcherServlet的任务是将请求发送给Sprin ...
- ADO学习(七)ADOX相关知识
一.ADOX 概述 Microsoft? ActiveX? Data Objects Extensions for Data Definition Language and Security (ADO ...
- grasshopper_如何使用Google的Grasshopper编码应用程序来学习手机上的编码基础知识...
grasshopper 什么是蚱hopper? (What is Grasshopper?) Grasshopper is an interactive education app for learn ...
最新文章
- “PC一哥”联想的这些年
- secureCRT按回车键全屏的解决方法
- php rsa加密实例,关于PHP语言的RSA加密实例讲解
- shell 中去掉末尾换行符
- 基于External-DNS的多集群Service DNS实践
- 苹果2020年全系展望:iPhone12不会去掉刘海但5G是必须的
- mysql添加字典子项_如何使用executemany在MySQL中插入Python字典列表
- java操作Excel之POI(4)利用POI实现数据的批量导出
- Log4j 配置的webAppRootKey参数问题
- Children’s Queue
- Atitit 资源清理之道与gc之道 gc算法 清理临时表 临时资源 使用的算法类型是 引用计数(reference counting),基于时间过期自动清理资源 1. 3.1. 从各种
- 如何更改通达OA附件的存储目录
- 基础篇:6)形位公差标注(GDT标准)-总章
- 十大编程语言的优劣对比简述
- 定时器+echarts运行时间太长导致内存溢出页面崩溃
- 2017陕西省网络空间安全技术大赛_Crypto_crypt1_Writeup
- Argis ArcToolbox-分割栅格,无结果**
- uniapp前端向后端发送请求时,出现跨域问题的解决方法与原理
- Kubernetes volumes简介
- linux cadaver 命令,(个人学习Linux经历)文本命令