欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

述ASCII GBK与UTF8编码范围

程序员文章站 2022-05-25 18:33:15
...
众所周知ASCII码是使用指定的7位或8位二进制数组合来表示128或256种可能的字符。ASCII编码可以表示的最大字符数年是256,其实英文字符并没有那么多,一般只用前128个(最高位为了0),其中包括了控制字符、数字、大小写字母和其他一些符号。而最高为1的另128个字符为“扩展ACSII”。128个字符,其中0x00~0x1F(0~31)、)、0x7F(127)是控制符。其他编码0x20~0x7E(32~126)则定义实际可见的字符,包括数字、大小写英文字母、标点符号等。

GBK编码
GBK是国家标准编码,它是对gb2312的扩展,定义了包含简体中文、繁体中文、日文、韩文等所用的字符。现在常用的Windows简体中文系统默认就是使用这种编码方式来解释字符的。在编码上,GBK采用了单双字节混合的方式。它兼容ASCII,因些0x~07F部分的定义和ASCII一样。对其他字符,它使用两个字节来表示,但弟一个字符最高位必须是1,即必须是0x80~0xFF,以便在解码时和兼容ASCII的字符区别,弟二个字节则没此限制。

解码时,需要逐个字节检查具体如下:
1.如果这个字节的范围是0x00~0x7F,即最高位是0时,这个字节本身就代表一个字符,和ASCII的含义相同。
2.如果字节范围0x80~0xFF,即最高位为1时,还需要再取下一个字节,两个字节合起来才表示一个字符。GB_2312 字符集包含了 6763个的 简体汉字,和682 个标准中文符号。在这个标准中,每个汉字用2个字节来表示,每个字节的ascii码为 161-254 (16 进制A1 - FE),第一个字节 对应于 区码的1-94 区,第二个字节 对应于位码的1-94 位。

UTF8编码
在UTF-8里,英文字符仍然跟ASCII编码一样,因此原先的函数库可以继续使用。而中文的编码范围是在0080-07FF之间,因此是2个字节表示(但这两个字节和GB编码的两个字节是不同的),用专门的Unicode处理类可以对UTF编码进行处理,三个字节则用于中文简、中文繁等。

对应UCS-2的字符  UTF-8字节数据编码/解释
U+0000 - U+007F 0*** ****(0x00~0x7F) 字节最高位为了0,则它表示一个字符,和ASCII解释一样

U+0080 - U+07FF 110* ****  10** ****(0xC0~0xDF)  字节最高三位是110,则这是双字节编码,用于其他字母字符

U+0800 - U+FFFF 1110 ****  10** ****  10** ****(0xE0~0xEF)  字节最高四位是1110,则这是三字节编码,用于其他字符,如中文简繁等
相关标签: Windows