字符集utf-8/unicode

2016-08-17  本文已影响0人  YongpingZhao

概念##

什么是unicode/utf-8
unicode定义了所有可以用来表示字符的数值集合,而utf8/utf16等utf标准定义了这些数值和字符的映射关系。简单来说,unicode、gbk和大五码就是编码的值,而utf-8,uft-16之类就是这个值的表现形式

控制码##

把0x20以下的字节状态成为“控制码”

ascii码##

所有的空格、标点符号、数字、大小写字码分别用连续的字节状态表示,一直到127号,这就是ascii码

gb2312##

gb2312是对ASCII码的中文扩展。
“半角字符”:127号以下的就是半角字符。
“全角字符”:127号以上的就是全角字符

utf-8##

编码规则####

1.对于单字节符号,字节的第一位设为0,后面7位为这个符号的unicode码,对于英文字母,utf-8和unicode是相同的。
2.对于n字节的符号(n>1),第一个字节的前n为都为1,第n+1为设为0,后面字节的前两位一律设为10,剩下的没提及的二进制位,全部为这个符号的unicode码。

优势####

uft-8最大的优势是没有字节序的概念,特别适合用于字符串的网络字节传输,没有大小端的概念。

劣势####

本地字符串的处理时,处理英文字符的时候并不会有大的问题,但是处理中文字符等远东字符的时候,由于一个字符并不能完整的表示一个中文汉字,在utf8模式下,一个中文字符至少需要3个utf8字符。因此通过下标来处理中文字符很困难。而且一个中文汉字需要占用3个字符,占用的流量也比较大。

unicode##

ISO 规定必须用两个字节,也就是16位来统一表示所有的字符,对于ascii里的那些"半角"字符,UNICODE 包持其原编码不变,只是将其长度由原来的8位扩展为16位,而其他文化和语言的字符则全部重新统一编码。由于"半角"英文符号只需要用到低8位,所以其高 8位永远是0,因此这种大气的方案在保存英文文本时会多浪费一倍的空间。

上一篇下一篇

猜你喜欢

热点阅读