UTF-8相关知识总结
前言
上一篇我们讲到Unicode这一编码,提到了其可由UTF-8、UTF-16等编码方式来编码。这一次我们就来简单介绍一下UTF-8编码的相关知识
一、UTF-8是什么?
UTF-8(8-bit Unicode Transformation Format)是一种针对Unicode的可变长度字符编码,也是一种前缀码。
前缀码这个概念很重要,理解它有助于后续内容的学习。
前缀码,是一种编码系统。这种编码系统通常是可变长度码,在其中的每个码字,都具备“前置性质”(prefix
property),也就是说,在编码中的每个码字,都不能被其他码字当成前置部位。
二、UTF-8的编码方式
UTF-8,顾名思义(8-bit Unicode Transformation Format),其和Unicode编码肯定有一一对应的关系,让我们看一下它们二者是如何对应的
我们用这个表来举一个例子:"我"这个字的Unicode编码为u+6211
1、它属于U+0800到U+FFFF区域,这个表说明它使用三字节,1110xxxx 10xxxxxx 10xxxxxx
2、十六进制的0x6211换算成二进制就是0110-0010-0001-0001,对应的填入上一步中的X位,即11100110 10001000 10010001
3、最后的结果就是三字节0xE6 0x88 0x91,这就是这个字符"我"的UTF-8编码。
值得一提的是,不知出于什么问题,在很多在线转换网站中,转换后的结果仍然是6211只不过前缀变成了&#x(这种好像叫NCR,这个问题我们回头再说),找了一会才找到一个比较靠谱的网站
Unicode和UTF编码转换
转换结果如下:
2.UTF-8的优点
优点有很多,但是最为重要的一点就是
ASCII是UTF-8的一个子集。因为一个纯ASCII字符串也是一个合法的UTF-8字符串,所以现存的ASCII文本不需要转换。为传统的扩展ASCII字符集设计的软件通常可以不经修改或很少修改就能与UTF-8一起使用。
总结及待解决问题
以上就是今天要讲的内容,本文简单介绍了UTF-8的相关知识。
待解决问题有两个,一个是汉字由几个字节来编码?另一个是NCR的相关概念。