编码:utf8, unicode, GBK

ASCII码表

http://ascii.911cha.com/




ASCII码一共128个,用一个字节存储就可以。要表示全世界各种不同的符号则需要另外的编码,占用更多的字节。

unicode就是用来表示全世界符号的一种编码方案,是一套字符集。全称是"Universal Multiple-Octet Coded Character Set",简称UCS。

注意:unicode是符号集,定义一个符号在机器上的代号是多少。unicode是定长编码,所有字符是2个字节(UCS2)或者4个字节(UCS4),这样的编码对ASCII码来说是非常浪费内存的,所以就有了变长编码,如utf8,utf8是unicode的具体实现方式。


生活中经常遇到中文乱码的问题,就是因为你看到的乱码用当前的编码来识别是不对的。所以在互联网交流的时候用同一份编码就很重要,utf8就是一个非常广泛使用的unicode实现方式。utf8是变长的编码,存储长度为1到6个字节,一般ASCII码1个字节存储,中文3个字节存储。utf8是这样实现unicode的:


上面的n是字节长度,比如0~0x7F的符号(也就是ASCII码)在utf8用一个字节存储。“中”的unicode是4E2D(100111000101101),4E2D所在的范围用3个字节存储,存储方式是将100111000101101从后往前依次的填到上表第三行的xxxx中,前面不够的补0。最后的utf8的编码是111000100,10111000,10101101,十六进制就是E4 B8 AD。


BOM —— Byte Order Mark

unicode编码有字节序的问题,unicode在每个文件的开头有个“ZERO WIDTH NO-BREAK SPACE”字符用来表示编码字节序。前两个字节FEFF表示大端,FFFE表示小端。ZERO WIDTH NO-BREAK SPACE也叫被称为BOM。utf8是不需要表示字节序的,这时的BOM用来表示编码,utf8编码的标志是EF BB BF,utf8也可以不带BOM,如果不带BOM则没有这三个字节。

Big Endian,  Little Endian, utf8



utf8,utf16,utf32

UCS-2和UCS-4只规定了代码点和文字之间的对应关系,并没有规定代码点在计算机中如何存储。 规定存储方式的是UTF。utf8是变长的编码,utf16是两个字节代表一个字符,utf32是四个字节代表一个字符。


gbk

GBK是中文字符编码,包括简体和繁体。gb2312是中文简体编码。


参考:

http://www.cnblogs.com/94cool/archive/2012/06/20/2555655.html

http://blog.charlee.li/unicode-intro

http://blog.csdn.net/tge7618291/article/details/7599902


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值