一、介绍字符编码、内码,顺带介绍汉字编码
字符必须编码后才能被计算机处理。计算机使用的缺省编码方式就是计算机的内码。早
期的计算机使用7位的ASCII编码,为了处理汉字,程序员设计了用于简体中文的GB2312
和用于繁体中文的big5。
GB2312(1980年)一共收录了7445个字符,包括6763个汉字和682个其它符号。汉字区的内
码范围高字节从B0-F7,低字节从A1-FE,占用的码位是72*94=6768。其中有5个空位是
D7FA-D7FE。
GB2312支持的汉字太少。1995年的汉字扩展规范GBK1.0收录了21886个符号,它分为汉字
区和图形符号区。汉字区包括21003个字符。2000年的GB18030是取代GBK1.0的正式国家
标准。该标准收录了27484个汉字,同时还收录了藏文、蒙文、维吾尔文等主要的少数民
族文字。现在的PC平台必须支持GB18030,对嵌入式产品暂不作要求。所以手机、MP3一
般只支持GB2312。
从ASCII、GB2312、GBK到GB18030,这些编码方法是向下兼容的,即同一个字符在这些方
案中总是有相同的编码,后面的标准支持更多的字符。在这些编码中,英文和中文可以
统一地处理。区分中文编码的方法是高字节的最高位不为0。按照程序员的称呼,
GB2312、GBK到GB18030都属于双字节字符集 (DBCS)。
有的中文Windows的缺省内码还是GBK,可以通过GB18030升级包升级到GB18030。不过
GB18030相对GBK增加的字符,普通人是很难用到的,通常我们还是用GBK指代中文
Windows内码。
这里还有一些细节:
GB2312的原文还是区位码,从区位码到内码,需要在高字节和低字节上分别加上A0。
在DBCS中,GB内码的存储格式始终是big endian,即高位在前。
GB2312的两个字节的最高位都是1。但符合这个条件的码位只有128*128=16384个。所以
GBK和GB18030的低字节最高位都可能不是1。不过这不影响DBCS字符流的解析:在读取
DBCS字符流时,只要遇到高位为1的字节,就可以将下两个字节作为一个双字节编码,而
不用管低字节的高位是什么。
二、关于编码
所谓编码,是以固定的顺序排列字符,并以此做为记录、存贮、传递、交换的统一内部
特征,这个字符排列顺序被称为“编码”。和中文字库有关的常见编码有:大陆GB码、
GBK码、港台BIG-5码等。下面简要介绍一下。
GB码
全称是GB2312-80《信息交换用汉字编码字符集 基本集》,1980年发布,是中文信息处
理的国家标准,在大陆及海外使用简体中文的地区(如新加坡等)是强制使用的唯一中
文编码。P-Windows3.2和苹果OS就是以GB2312为基本汉字编码, Windows 95/98则以GBK
为基本汉字编码、但兼容支持GB2312。
GB码共收录6763个简体汉字、682个符号,其中汉字部分:一级字3755,以拼音排序,二
级字3008,以偏旁排序。该标准的制定和应用为规范、推动中文信息化进程起了很大作
用。
1990年又制定了繁体字的编码标准GB12345-90《信息交换用汉字编码字符集 第一辅助
集》,目的在于规范必须使用繁体字的各种场合,以及古籍整理等。该标准共收录6866
个汉字(比GB2312多103个字,其它厂商的字库大多不包括这些字),纯繁体的字大概有
2200余个。
Unicode编码(Universal Multiple Octet Coded Character Set)
国际标准组织于1984年4月成立ISO/IEC JTC1/SC2/WG2工作组,针对各国文字、符号进行
统一性编码。1991年美国跨国公司成立Unicode Consortium,并于1991年10月与WG2达成
协议,采用同一编码字集。目前Unicode是采用16位编码体系,其字符集内容与ISO10646
的BMP(Basic Multilingual Plane)相同。Unicode于1992年6月通过DIS(Draf
International Standard),目前版本V2.0于1996公布,内容包含符号6811个,汉字
20902个,韩文拼音11172个,造字区6400个,保留20249个,共计65534个。
GBK编码(Chinese Internal Code Specification)
GBK编码是中国大陆制订的、等同于UCS的新的中文编码扩展国家标准。GBK工作小组于
1995年10月,同年12月完成GBK规范。该编码标准兼容GB2312,共收录汉字21003个、符
号883个,并提供1894个造字码位,简、繁体字融于一库。
Windows95/98简体中文版的字库表层编码就采用的是GBK,通过GBK与UCS之间一一对应的
码表与底层字库联系。
BIG5编码
是目前台湾、香港地区普遍使用的一种繁体汉字的编码标准,包括440个符号,一级汉字
5401个、二级汉字7652个,共计13060个汉字。
方正748编码
所谓748编码,是指方正系统在长期应用过程中实施、制定的简、繁体字库编码方式,简
体兼容GB2312且有所扩展,共7156字;繁体兼容GB12345并扩展全部BIG-5汉字,计14943
字。此外,方正748编码还含有丰富的符号库。748编码仅用于方正软件和系统。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/coffeemay/archive/2006/04/17/666213.aspx