字体编码介绍

ASCII码
ASCII码一共规定了128个字符的编码,对英语字符与二进制位之间的关系,做了统一规定。这128个符号(包括32个不能打印出来的控制符号),只占用了一个字节的后面7位,最前面的1位统一规定为0。
非ASCII编码
不同的国家有不同的字母,哪怕都使用256个符号的编码方式,代表的字母却不一样。不过,在所有这些编码方式中,0-127表示的符号是一样的,不一样的知识128-255的这一段。
简体中文常见的编码方式是GB2312(只针对win简体中文版),使用两个字节表示一个汉字,所以理论上最多可以表示256*256=65536个符号。
Unicode
Unicode码:一种所有符号的编码。每一个符号的编码都被赋予独一无二的编码。


注:Unicode只是一个符号集,只规定了符号的二进制代码,却没有规定这个二进制代码应该如何存储(计算机如何区分unicode和ascii等)。造成的结果:
出现了unicode的多种存储方式,即,有许多种不同的二进制格式,可以用来表示unicode;
Unicode在很长一段时间内无法推广,直到互联网的出现。
UTF-8
UTF-8就是在互联网上使用最广的一种unicode的实现方式(只是众多实现方式之一)。
UTF-8最大的一个特点:一种变长的编码方式。可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度。
UTF-8编码规则:
对于但单字节的符号,字节的第一位设为0,后面7位为这个符号的unicode码。(对于英语字母,UTF-8编码和ASCII码是相同的);
对于n字节的符号(n>1),第一个字节的前n位都设为1,第n+1位设为0,后面字节的前两位一律设为10。剩下的没有提及的二进制位,全部为这个符号的unicode码。
Little endian 和 Big endian
Unicode编码指的是UCS-2编码方式,即直接用两个字节存入字符的Unicode码。用的little endian格式。
Unicode big endian编码与Unicode相对应。


Unicode规范中定义,每一个文件的最前面分别加入一个表示编码顺序的字符,这个字符的名字叫做“零宽度非换行空格”(ZERO WIDTH NO-BREAK SPACE),用FEFF表示,正好是两个字节,且FF比FE大1。
如果一个文本文件的头两个字节是FEFF,表示该文件采用大头方式;如果头两个字节是FFFE,就表示该文件采用小头方式。
实例
打开”记事本“程序Notepad.exe,新建一个文本文件,内容就是一个”严“字,依次采用ANSI,Unicode,Unicode big endian 和 UTF-8编码方式保存。
然后,用文本编辑软件UltraEdit中的”十六进制功能“,观察该文件的内部编码方式。
1)ANSI:文件的编码就是两个字节“D1 CF”,这正是“严”的GB2312编码,这也暗示GB2312是采用大头方式存储的。
2)Unicode:编码是四个字节“FF FE 25 4E”,其中“FF FE”表明是小头方式存储,真正的编码是4E25。
3)Unicode big endian:编码是四个字节“FE FF 4E 25”,其中“FE FF”表明是大头方式存储。
4)UTF-8:编码是六个字节“EF BB BF E4 B8 A5”,前三个字节“EF BB BF”表示这是UTF-8编码,后三个“E4B8A5”就是“严”的具体编码,它的存储顺序与编码顺序是一致的。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值