Unicode&ASCII

ASCII

计算机内部,所以信息最终都表示为一个二进制的字符串。每一个二进制位(bit)有01两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte)。也就是说,一个字节一共可以用来表示256种不同的状态,每一个状态对应一个符号,就是256个符号,从0000000011111111

ASCII码一共规定了128个字符的编码,比如空格“SPACE”32(二进制00100000)。这128个符号(包括32个不能打印出来的控制符号),只用了一个字节的后7位,最前面的1位统一规定位0

其中33个字符无法显示(一些终端提供给了扩展,使得这些字符可显示为诸如笑脸,扑克牌花式等8-bit符号),且这33个字符多数都已是陈废的控制字符。


Unicode 

万国码是计算机科学领域里的一项业界标准。它对世界上大部分的文字系统进行了整理、编码,使得电脑可以用更为简单的方式来呈现和处理文字。

Unicode涵盖的数据除了视觉上的字形、编码方法、标准的字符编码外,还包含了字符特性,如大小写字母。


编码方式

使用16位的编码空间。也就是每个字符占用2个字节。这样理论上一共最多可以表示2^16(即65536)个字符。基本满足了各种语言的使用。实际上当前版本的统一码并未完全使用这16位编码,而是保留了大量空间以作为特殊使用或将来扩展。

扫描二维码关注公众号,回复: 5438526 查看本文章

实现方式

Unicode的实现方式不同于编码方式。一个字符的Unicode编码是确定的。但是在实际传输过程中,由于不同系统平台的设计不一定一致,以及出于节省空间的目的,对Unicode编码的实现方式有所不同。Unicode的实现方式称为Uincode转换格式。


例如,如果一个仅包含7位的ASCII字符的Unicode文件,如果每个字符都使用2字节的原Unicode编码传输,其第一字节的8位始终为0。这就造成了比较大的浪费。对于这种情况,可以使用UTF-8编码,这是一种变长编码,它将基本7ASCII字符仍用7位编码表示,占用一个字节(首位补0)。而遇到其他Unicode字符混合的情况,将按一定算法转换,每个字符使用1-3个字节编码,并利用首位为01进行识别。

猜你喜欢

转载自blog.csdn.net/ChangeNew/article/details/78663212