常用编码格式

ASCII 码

因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理。最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),ASCII

码用一个字节的低 7 位来表示大小写英文字母、数字和一些符号,总共有 128 个,0~31 是控制字符如换行回车删除等;32~126是打印字符,可以通过键盘输入并且能够显示出来。127是删除。

GBK编码

GBK编码采用单双字节变长编码,英文使用单字节编码,完全兼容ASCII字符编码,中文部分采用双字节编码。向下与 GB 2312 编码兼容,向上支持 ISO 10646.1国际标准,共收录了21003个汉字,完全兼容GB 2312标准,支持国际标准ISO/IEC10646-1和国家标准GB13000-1中的全部中日韩汉字

Unicode

Unicode是国际组织制定的可以容纳世界上所有文字和符号的字符编码方案。Unicode通常用两个字节表示一个字符,原有的英文编码从单字节变成双字节,只需要把高字节全部填为0就可以。

在表示一个Unicode的字符时,通常会用“U+”然后紧接着一组十六进制的数字来表示这一个字符。目前的Unicode字符分为17组编排,0x0000至 0x10FFFF,每组称为平面(Plane),而每平面拥有65536个码位,共1114112个。然而目前只用了少数平面。

UTF-8/UTF-16/UTF-32

对可以用ASCII表示的字符使用UNICODE并不高效,因为UNICODE比ASCII占用大一倍的空间,而对ASCII来说高字节的0对他毫无用处。为了解决这个问题,就出现了一些中间格式的字符集,他们被称为通用转换格式,即UTF(Unicode Transformation Format)。常见的UTF格式有:UTF-8/UTF-16/UTF-32,他们都是是将Unicode数字转换到程序数据的编码方案。

UTF-8

UTF-8编码规则:如果只有一个字节则其最高二进制位为0;如果是多字节,其第一个字节从最高位开始,连续的二进制位值为1的个数决定了其编码的字节数,其余各字节均以10开头。UTF-8转换表表示如下:

UTF-16

把Unicode字符集的抽象码位映射为16位长的整数(即码元)的序列,用于数据存储或传递。Unicode字符的码位,需要1个或者2个16位长的码元来表示,因此这是一个变长表示。UTF-16比起UTF-8,好处在于大部分字符都以固定长度的字节(2字节) 储存,但UTF-16却无法兼容于ASCII编码。

UTF-32

UTF-32 (或 UCS-4)是一种将Unicode字符编码的协定,对每一个Unicode码位使用恰好32位元。其它的Unicode transformation formats则使用不定长度编码。因为UTF-32对每个字符都使用4字节,就空间而言,是非常没有效率的。特别地,非基本多文种平面的字符在大部分文件中通常很罕见,以致于它们通常被认为不存在占用空间大小的讨论,使得UTF-32通常会是其它编码的二到四倍。虽然每一个码位使用固定长定的字节看似方便,它并不如其它Unicode编码使用得广泛。

你可能感兴趣的:(常用编码格式)