unicode 和 utf-8解疑

百科对于unicode编码的解释是酱紫的:

Unicode(统一码、万国码、单一码)是计算机科学领域里的一项业界标准,包括字符集、编码方案等。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。

看来unicode只是一种标准,用多个字节来编码字符。unicode设定了字符编码表,像ASCII字符表,和计算机怎么实现的一些方案(如BOM)。传统的ASCII编码只能表示127个字符,对于拉丁文是足够的,但 世界还有很多其他的文字,比如博大精深的中文汉字。unicode旨在统一表示世界的字符。unicode只是一种编码格式规范,在计算机底层根据unicode字符编码规范,实现了的字符编码有utf8,utf16,utf32,gbk,latin1等。接下来谈谈utf8编码。

utf8编码又称万国码,用1到4个字节来存储字符(中文在unicode中用2个字符来编码(4e00~65bf),utf8用3个字节来存储)。utf8编码的过程是酱紫的:

1 以单字节进行编码

2如果字符是单字节字符,像拉丁文,则‘0’开头,后面就是该字符在unicode编码表中的第二个字节的低7位

3多字节字符(如n位),首字节的前n为为1,n+1位为0,后面剩余的字节以10开头,未提到的位按该字符在unicode编码表中的编码填充。

例如,英文的字母A',在unicode中的编码为:0000 0000 0110 0101,utf8中的存储为:0110 0101,比unicode编码节约了一个字节。中文的‘胡‘字在unicode中的编码为:U80e1(1000 0000 1110 0001),那么用utf8存储时就是酱紫的:1110 1000 10 000011 10 100001.比unicode多了一个字节。

utf8是以单字节,按特定格式进行编码的,在磁盘中存储时不存在字节序问题(BOM),也就是utf8是字节序无关的,添不添加bom都一样。但unicode允许utf8添加bom,unicode规定utf8的bom开头为:EF BB BF。

你可能感兴趣的:(unicode 和 utf-8解疑)