GB18030-2000标准在Linux上的实现[1]

[入库:2005年9月19日] [更新:2007年3月24日]

本文简介:


  作者:王守华
  
  本文首先介绍了国家最新颁布的GB 18030-2000标准的结构和编码规则,对Linux的国际化和本地化机制进行了简要的概述,然后从Glibc、 Locale两个方面具体讨论了如何在Linux上实现对GB 18030-2000标准的支持,并且对下一步需要进行的工作进行了展望。
  
  一、GB18030-2000编码标准简介
  GB18030-2000编码标准是由信息产业部和国家质量技术监督局在2000年 3月17日联合发布的,并且将作为一项国家标准在明年的1月正式强制执行。
  
  1.概述
  GB18030-2000编码标准是在原来的 GB2312-1980 编码标准和 GBK 编码标准的基础上进行扩充,增加了四字节部分的编码。它可以完全映射ISO10646的基本平面和所有辅助平面,共有150多万个码位。在ISO10646的基本平面内,它在原来的2万多汉字的基础上增加了7000 多个汉字的码位和字型,从而使基本平面的汉字到达 27000多个。它的主要目的是为了解决一些生、偏、难字的问题,以及适应出版、邮政、户政、金融、地理信息系统等迫切需要的人名、地名用字问题。
  GB18030-2000作为GB2311体系的编码字符标准,规定了信息交换用的图形字符及其二进制编码的十六进制表示。它支持 GB 13000.1-1993的全部中日韩(CJK)统一汉字字符和全部中日韩统一汉字Extension A和Extension B的字符
  
  2.字汇
  GB18030-2000编码标准收录的字符分别以单字节、双字节和四字节编码。下面简要列举一下它们各自包括的内容:
  1) 单字节部分
  
  单字节部分收录了GB11383的0x00到0x7E全部 128个字符及单字节编码的欧元符号。
  2) 双字节部分
  双字节部分收录的内容如下:
  GB13000.1的全部CJK统一汉字字符
  GB13000.1的CJK兼容区挑选出来的21个汉字;
  GB13000.1中收录而GB2312未收录的我国台湾地区使用的图形字符139个;
  GB13000.1收录的其它字符31个;
  GB2312中的非汉字符号;
  GB12345的竖排标点符号19个;
  Gb2312未收录的10个小写罗马数字;
  Gb2312未收录的带音调的汉语拼音字母5个以及 a和g;
  汉字数字“O”;
  表意文字描述符13个;
  增补汉字和部首/构件80个;
  双字节编码的欧元符号。
  3) 四字节部分
  四字节部分收录了上述双字节字符之外的,包括 CJK 统一汉字扩充 A 在内的 GB13000.1 中的全部字符
  
  3.编码规则
  GB18030-2000标准采用单字节、双字节和四字节三种方式对字符编码。单字节部分采用GB 11383的编码结构与规则,使用 0x00至0x80码位。双字节部分采用两个字节表示一个字符,其首字节码位从 0x81至0xFE,尾字节码位分别是0x40至0x7E和0x80至0xFE。四字节部分第一、三字节仍为0x81~0xFE,第二、四字节采用GB 11383未使用的0x30到0x39作为对双字节编码扩充的后缀,这样扩充的四字节编码,其范围为0x81308130 到 0xFE39FE39。码位范围分配如下表所示:
  表1 码位范围分配
  
  字节数 码位空间 码位数
  单字节 0x00~0x80 129 个码位
  双字节 第一字节 第二字节 23940 个码位
  0x81~0xfe 0x40~0x7e, 0x80~0xfe
  四字节 第一字节 第二字节 第三字节 第四字节 1587600 个码位
  0x81~0xfe 0x30~0x39 0x81~0xfe 0x30~0x39
  
  四字节字符的编码自第四个字节开始,编码码位为 0x30至0x39;其次是第三个字节,编码码位为0x81至0xFE;再次是第二个字节,编码码位为0x30至0x39;最后是第一个字节,编码码位为0x81至0xFE。即:
  
  0x81308130至0x81308139;
  0x81308230至0x81308239;
  ......
  0x8130FE30至0x8130FE39;
  0x81318130至0x81318139;
  ......
  0x8131FE30至0x8131FE39;
  ......
  0x82308130至0x82308139;
  ......
  0xFE308130至0xFE308139;
  ......
  0xFE39FE30至0xFE39FE39。
  
  
  二、Linux的国际化和本地化机制
  Linux的国际化和本地化机制非常灵活方便,这使得我们在Linux增加一种新的本地化支持非常容易,甚至基本上不需要去编译应用程序包,而只需要在系统核心的某些地方进行扩充和修改就可以了。
  1.NLS简介

本文关键:GB18030-2000标准在Linux上的实现
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top