【转】中国GB系列字符集和字符编码
小吃货
小吃货
常见的中国字符集有:
GB2312过时标准、GBK微软标准、GB18030国家标准、GB18030收录的汉字最多
如果连GB18030也无法读取,应该就是出现了GB18030也无法编码的字符,可以加上 errors='ignore’来忽略非法字符
当计算机引入中国后,为了显示中文,必须重新设计一套字符集(很明显,中国汉字远远超过128个)。
新的字符集在1981年由中国国家标准总局发布,取名为GB2312或GB2312-80。全称为《信息交换用汉字编码字符集·基本集》。
只收录6763个汉字,有不少汉字,如"啰","镕"以及台湾及香港使用的繁体字,日语及朝鲜语汉字等,并未有收录在内。
GB2312中对所收汉字进行了“分区”处理,每区含有94个字符,共计94个区。即最多可表示94*94(8836个符号)
用所在的区和位来表示字符,例如“万”字在45区82位,所以“万”字的区位码是:4582。
分区如下:
01~09区(682个):特殊符号、数字、英文字符、制表符等,包括拉丁字母、希腊字母、日文平假名及片假名字母、俄语西里尔字母等在内的682个全角字符;
10~15区:空区,留待扩展;在附录3,第10区推荐作为 GB 1988–80 中的94个图形字符区域(即第3区字符之半形版本)。
16~55区(3755个):常用汉字(也称一级汉字),按拼音排序;
56~87区(3008个):非常用汉字(也称二级汉字),按部首/笔画排序;
88~94区:空区,留待扩展。
GB2312编码方式
为了兼容ASCII字符集,GB2312规定一个小于127的字符的意义与原来相同。
但两个大于127的字符连在一起时,就表示一个GB2312字符。
每个字符以两个字节来表示。第一个字节称为“高位字节”,第二个字节称为“低位字节”。“高位字节”使用了0xA1–0xF7(把01–87区的区号加上0xA0),“低位字节”使用了0xA1–0xFE(把01–94加上0xA0)。
中文的半角和全角 在GB2312中除了包含常用中文字符外,还把数学符号、罗马希腊字母、日文的片假名等都编进去了,连在ASCII里本来就有的数字、标点、字母都统统重新编了两个字节长的编码,这就是常说的"全角"字符,而原来在ASCII中的那些符号就叫"半角"字符了。
GBK编码字符集
GB2312的出现,基本满足了汉字的计算机处理需要,它所收录的汉字已经覆盖中国大陆99.75%的使用频率。但对于人名、古汉语等方面出现的罕用字和繁体字,GB2312不能处理,于是微软利用GB2312未使用的编码空间,对其进行扩展形成了GBK编码。共收录21886个汉字和图形符号,其中汉字(包括部首和构件)21003个,图形符号883个。
GBK向下完全兼容GB2312-80编码。支持GB2312-80编码不支持的部分中文姓,中文繁体,日文假名,还包括希腊字母以及俄语字母等字母。
GBK编码方式
字符有一字节和双字节编码,00–7F范围内是第一个字节,和ASCII保持一致
之后的双字节中,前一字节是双字节的第一位。总体上说第一字节的范围是81–FE(也就是不含80和FF),第二字节的一部分领域在40–7E,其他领域在80–FE。
GB18030编码字符集
但GBK自身并非国家标准,所以由国家质量技术监督局于2000年3月17日发布了最新的字符集,称之为GB18030,全称为国家标准GB 18030-2005《信息技术 中文编码字符集》。
共收录汉字70244个,与GB2312完全兼容,与GBK基本兼容。
GB 18030主要有以下特点:
采用变长多字节编码,每个字可以由1个、2个或4个字节组成。
编码空间庞大,最多可定义161万个字符。
支持中国国内少数民族文字,不需要动用造字区。
汉字收录范围包含繁体汉字以及日韩汉字。
GB18030编码方式
GB18030包含三种长度的编码:单字节的ASCII、双字节的GBK(略带扩展)、以及用于填补所有Unicode码位的四字节UTF区段。GBK双字节部分通过查表定义,而四字节部分则根据之前两个部分没有提到的通用字符集码位顺序填补。由于和GBK兼容,GB 18030在搜索ASCII字符时也需要使用特别代码进行判断。
大五码(Big5)字符集和字符编码
“大五码”(Big5)是由台湾财团法人信息产业策进会为五大中文套装软件所设计的中文共通内码,在1983年12月完成。除了台湾外,其他使用繁体汉字的地区,如香港(香港增补字符集)、澳门(澳门增补字符集),及使用繁体汉字的海外华人,都曾普遍使用Big5码做为中文内码及交换码。
编码字符集和编码方案
Big5码是一套双字节字符集,共收录13,060个汉字,使用了双八码存储方法,以两个字节来安放一个字。第一个字节称为“高位字节”,第二个字节称为“低位字节”。
“高位字节”使用了0x81-0xFE,“低位字节”使用了0x40-0x7E,及0xA1-0xFE。在Big5的分区中:
0x8140-0xA0FE 保留给用户自定义字符(造字区)
0xA140-0xA3BF 标点符号、希腊字母及特殊符号,
包括在0xA259-0xA261,安放了九个计量用汉字:兙兛兞兝兡兣嗧瓩糎。
0xA3C0-0xA3FE 保留。此区没有开放作造字区用。
0xA440-0xC67E 常用汉字,先按笔划再按部首排序。
0xC6A1-0xC8FE 保留给用户自定义字符(造字区)
0xC940-0xF9D5 次常用汉字,亦是先按笔划再按部首排序。
0xF9D6-0xFEFE 保留给用户自定义字符(造字区)