浅谈计算机编码-ASCII、Unicode、UTF-8

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

ASCII

ASCII(American Standard Code for Information Interchange,美国信息互换标准代码)是一套基于拉丁字母的字符编码,共收录了 128 个字符,这128个字符只占用了一个字节的后7位,最前面的1位统一规定为0。

但是,不同的国家有不同的字母。其他的非拉丁字母语言,无法很好的用ASCII码表表示,尤其是汉语,一个字节的256个符号不足以表示汉字(简体中文编码GB2312,使用两个字节表示一个汉字)。因此出现了各种适应其他语言的编码。比如中文的GB2312等。可是,不同的编码表使得乱码的情况大大增加。因此,出现了能包含所有编码表的编码Unicode。

Unicode

Unicode字符集编码全称:Universal Multiple-Octet Coded Character Set,通用多八位编码字符集。Unicode字符集是国际组织制定的可以容纳世界上所有文字和符号的编码方案。

Unicode编码使用两个字节(0x0000-0xFFFF)来表示一个字符,世界上任何文字和符号都对应于Unicode字符集中的一个二进制代码,但是:Unicode只是一个符号集, 它只规定了符号的二进制代码, 却没有规定这个二进制代码应该如何存储。

Unicode编码的优点是覆盖了世界上所有的文字和符号,缺陷则是占用了大量空间,使网络传输的速度下降。对于英文字符这样的来说更是浪费了一个字节的位置。

这种情况下就出现了UTF-8。

UTF-8编码

UTF-8全称:8bit Unicode Transformation Format,8比特Unicode通用转换格式。UTF-8是一种针对Unicode的可变长度字符编码。可以表示Unicode标准中的任何一个字符,且其编码中的第一个字节仍然与ASCII兼容。这就使得容量上较Unicode编码更小,传输更快速。也是现在最常使用的编码表。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章