教师继续教育(一)信息技术:汉字的编码
创建时间:2013年01月25日
所属分类: 校园新闻

    信息技术组学习材料:

    了解汉字编码


    关于汉字编码,教材只是蜻蜓点水地提了一下,很多人也只是了解汉字编码占用2个字节。至于汉字编码具体情况是怎样的,gb码,unicode,cjk等是怎么回事,则是一头雾水。下面这篇文章对常见的汉字编码做了简单的说明,请各位老师认真阅读。写出100字左右的心得体会。

要求:要言之有物,有自己的真实感受与认识。如果想对汉字编码内容有更深层次的了解,请自行搜索相关知识。也可以在心得中把自己对汉字编码的理解写出来。

    GB2312

    GB2312码是中华人民共和国国家汉字信息交换用编码,全称《信息交换用汉字编码字符集——基本集》,由国家标准总局发布,1981年5月1日实施,通行于大陆。新加坡等地也使用此编码。

    GB2312或GB2312-80是一个简体中文字符集的中国国家标准,全称为《信息交换用汉字编码字符集•基本集》,又称为GB0,由中国国家标准总局发布,1981年5月1日实施。GB2312编码通行于中国大陆;新加坡等地也采用此编码。中国大陆几乎所有的中文系统和国际化的软件都支持GB2312。

    GB2312标准共收录6763个汉字,其中一级汉字3755个,二级汉字3008个;同时,GB2312收录了包括拉丁字母、希腊字母、日文平假名及片假名字母、俄语西里尔字母在内的682个全角字符。

    GB2312的出现,基本满足了汉字的计算机处理需要,它所收录的汉字已经覆盖中国大陆99.75%的使用频率。

    GB2312中对所收汉字进行了“分区”处理,每区含有94个汉字/符号。这种表示方式也称为区位码。

01-09区为特殊符号。

16-55区为一级汉字,按拼音排序。

56-87区为二级汉字,按部首/笔画排序。

10-15区及88-94区则未有编码。

    举例来说,“啊”字是GB2312之中的第一个汉字,它的区位码就是1601。

    每个汉字及符号以两个字节来表示。第一个字节称为“高位字节”(也称“区字节)”,第二个字节称为“低位字节”(也称“位字节”)。

“高位字节”范围是0xA1~0xF7(即0xA0+01~0xA0+87【10100001~11110111】)

“低位字节”范围是0xA1-0xFE(即0xA0+01~0xA0+94【10100001~11111110】)。

    由于一级汉字从16区起始,汉字区的“高位字节”的范围是0xB0-0xF7,“低位字节”的范围是0xA1-0xFE,占用的码位是72*94=6768。其中有5个空位是D7FA-D7FE。例如“啊”字在大多数程序中,会以两个字节,0xB0(A0+16)0xA1(A0+01)储存。

    对于人名、古汉语等方面出现的罕用字,GB2312不能处理,这导致了后来GBK及GB18030汉字字符集的出现。

    GB2312兼容ASCII,即GB2312对英文字符的编码是和ASCII完全一样的,而所有中文字符的GB2312内码高位都为1,不会出现0,所有的ASCII内码的最高位都为0,并且每个汉字占用2个字节,对于程序来说只要检查一个字节的最高位,就可以很容易的判断这个字符是中文还是英文字符,非常方便。

    GBK

    GB2312仅收汉字6763个,这大大少于现有汉字,随着时间推移及汉字文化的不断延伸推广,有些原来很少用的字,现在变成了常用字,例如:**的“镕”字,未收入GB2312-80.

    GBK最初是由微软对GB2312的扩展,也就是CP936字码表(CodePage936)的扩展(原来的CP936和GB2312-80一模一样),最初出现于Windows95简体中文版中,由于Windows产品的流行和在大陆广泛被使用,中华人民共和国国家有关部门将其作为技术规范。注意GBK并非国家正式标准,只是国家技术监督局标准化司、电子工业部科技与质量监督司发布的“技术规范指导性文件”。

    GBK之所以成功,正是因为它弥补了GB2312的缺陷:1。收录的汉字量大大增加;2。完全向下兼容GB2312,为GB2312所写的程序、文档无需任何变更即可正常使用。

    GBK编码是中国大陆制订的、等同于UCS的新的中文编码扩展国家标准。GBK工作小组于1995年10月,同年12月完成GBK规范。该编码标准兼容GB2312,共收录汉字21003个、符号883个,并提供1894个造字码位,简、繁体字融于一库。

GBK/2:OXB0A1-F7FE【1011000010100001~1111011111111110】

收录GB2312汉字6763个,按原序排列;

GBK/3:OX8140-A0FE【1000000101000000~1010000011111110】

收录CJK汉字6080个;

GBK/4:OXAA40-FEA0【1010101001000000~1111111010100000】

收录CJK汉字和增补的汉字8160个。


    GB18030

    2000年的GB18030取代了GBK1.0的正式国家标准。该标准收录了27484个汉字,同时还收录了藏文、蒙文、维吾尔文等主要的少数民族文字。现在的PC平台必须支持GB18030,对嵌入式产品暂不作要求。所以手机、MP3一般只支持GB2312。

    GB18030是最新的汉字编码字符集国家标准,向下兼容GBK和GB2312标准。GB18030编码是一二四字节变长编码。

    一字节部分从0x0~0x7F与ASCII编码兼容。

    二字节部分,首字节从0x81~0xFE,尾字节从0x40~0x7E以及0x80~0xFE,与GBK标准基本兼容。

    四字节部分,第一字节从0x81~0xFE,第二字节从0x30~0x39,第三和第四字节的范围和前两个字节分别相同。四字节部分覆盖了从0x0080开始,除去二字节部分已经覆盖的所有Unicode3.1码位。也就是说,GB18030编码在码位空间上做到了与Unicode标准一一对应,这一点与UTF-8编码类似。

    UNICODE

    GBK,GB18030以及同期流行于台湾香港的BIG5编码.虽然编码有些不同,但是设计思想是一致的:兼容ASCII,并确保不会有某个字节值为0的内码出现.有一个共同的特点是:它们都是局部的标准,只流行于某个地区/国家内.

    由于内码表都是各个国家独自制定的,同一个内码,在不同的国家表示的可能是不同的字符.(除了ASCII字符,ASCII字符在所有国家指定的内码表中都有同样的值.)不利于国家间的信息交换.于是UNICODE应运而生.

    UNICODE采用一种很简单的办法来解决这个问题.就是采用2个字节(UCS-2)或者4个字节(UCS-4)字节标识一个字符.2个字节总共可以表示65535个字符,足够表示世界上的所有语言的所有字符.(汉字不就有4万多个吗,65535怎么够.我估计只是常用的汉字几千个被编在UCS-2中吧.目前被正式编码到UNICODE码位的只有不超过65534个,所以就目前的情况来说,用2个字节是可以的.)注意UCS-4,UCS-2和ASCII是向下兼容的,只要前面补0就可以了.这点很重要,可以一直扩展下去包含全宇宙的字符.

    现在地球上每个字符在所有采用UNICODE字符编码的计算机内都有一个唯一的内码了.

    要注意,除了ASCII字符外,其他国家文字的字符的内码是重新分配过的,不一定和各国原有的编码相同.比如大部分汉字的GB2312内码和UNICODE内码都是不同的.


    UTF-8

    很显然,对于英语国家来说,UNICODE内码非常浪费空间,对于UCS-2浪费了50%的存储空间,对于UCS-4则浪费了70%的存储空间.而且还有一个更大的问题,UNICODE的内码中含有很多'',原有的C标准库函数没办法处理这些字符串.于是有人发明了一种针对UNICODE的变换规则,把UNICODE字符串中的0去除.注意这个变换规则不是通过查表实现的,而只要用一些位移操作就可以实现.这就是UTF8.UTF8只是UNICODE内码在存储/传输时的状态.而从GB2312编码转换到UNICODE编码需要查表.UTF8和UNICODE的关系与GB2312和UNICODE的关系有本质的不同.UTF8和UNICODE是一个人的两个面孔,GB2312和UNICODE是两个人.所以,要实现UTF8编码到GB2312编码的转换必须先把UTF8编码还原为UNICODE编码,再通过查表的方式,把UNICODE编码转化为GB2312编码。

    CJK

    中日韩统一表意文字(CJKUnifiedIdeographs),目的是要把分别来自中文、日文、韩文、越文中,本质、意义相同、形状一样或稍异的表意文字(主要为汉字,但也有仿汉字如日本国字、韩国独有汉字、越南的喃字)于ISO10646及Unicode标准内赋予相同编码。


当前位置:网站首页>校园新闻