GB 18030

GB 18030,全称《》,是中华人民共和国国家标准所规定的变长多字节字符集。其对GB 2312-1980完全向后兼容,与GBK基本向后兼容,并支持UnicodeGB 13000)的所有码位。GB 18030共收录汉字70,244个。

GB 18030
GB 18030 字节分配。“半码"(Half codes)指成对使用的四字节部分。
MIME / IANAGB18030
别名代码页 54936
语言国际,但以中文为主
标准GB 18030-2005, GB 18030-2000
分类Unicode转换格式扩展ASCII[lower-alpha 1]变长编码CJK
拓展自EUC-CN, GBK
变换/编码ISO 10646Unicode
前用GBK, GB2312
  1. 严格来说不是,因为ASCII字节会出现在GBK拓展二字节部分的后半字

GB 18030主要有以下特点:

  • 采用变长多字节编码,每个字可以由1个、2个或4个字节组成。
  • 编码空间庞大,最多可定义161万个字元。
  • 完全支持Unicode,无需动用造字区即可支持中国国內少数民族文字、中日韩和繁体汉字以及emoji等字符。

GB 18030在微软视窗系统中的代码页54936

GB 18030不是一个汉字规范,不定义汉字的写法。中国大陆在此方面的规定由《通用规范汉字表》管理。

标准要求

GB 18030 的目前版本为 GB 18030-2005。现行版本为国家质量监督检验总局和中国国家标准化管理委员会于2005年11月8日发布,2006年5月1日实施;是在GB18030-2000基础上增加了CJK统一汉字扩充B的汉字。 本规格的初版“GB 18030-2000《》”是由电子工业标准化研究所起草,由国家质量技术监督局于2000年3月17日发布。在GBK基础上增加了CJK统一汉字扩充A的汉字。

此标准内的单字节编码部分、双字节编码部分,和四字节编码部分收录的少数中日韩统一表意文字扩展A区汉字,为强制性标准。其他部分则属于规模性标准。在中华人民共和国境内所有软件产品,都需要支持这个同时包含单字节、双字节和四字节编码的规格。[1]:4

Unicode支持

GB 18030在其标准中以码形式定义了除去代理对外的全部Unicode码位的定义,因此算得上是一种Unicode的变换格式(UTF)。由于GB 18030基本上是绕开已分配的码点去指定需要对应的Unicode,其变换和UTF-8相比要复杂得多。在日常实现上,常常会直接使用一个偏移量表[2]

GB 18030—2005与GB18030—2000、GBK相比,去除了很多原来映射在PUA中的编码。后来剩余的24个PUA码位也在Unicode 4.1中加上,如下所示。

国标码码中私有区码位的演变
GB 字节串Unicode 码位
GBK 1.0[3] GB 18030-2005Unicode 4.1
A6D9[4]:108E78D ()FE10 ()
A6DAE78E ()FE12 ()
A6DBE78F ()FE11 ()
A6DCE790 ()FE13 ()
A6DDE791 ()FE14 ()
A6DEE792 ()FE15 ()
A6DFE793 ()FE16 ()
A6ECE794 ()FE17 ()
A6EDE795 ()FE18 ()
A6F3E796 ()FE19 ()
A8BCE7C7 ()1E3F (ḿ)1E3F (ḿ)
A8BFE7C8 ()01F9 (ǹ)01F9 (ǹ)
A989E7E7 ()303E ()303E ()
A98AE7E8 ()2FF0 ()2FF0 ()
A98BE7E9 ()2FF1 ()2FF1 ()
A98CE7EA ()2FF2 ()2FF2 ()
A98DE7EB ()2FF3 ()2FF3 ()
A98EE7EC ()2FF4 ()2FF4 ()
A98FE7ED ()2FF5 ()2FF5 ()
A990E7EE ()2FF6 ()2FF6 ()
A991E7EF ()2FF7 ()2FF7 ()
A992E7F0 ()2FF8 ()2FF8 ()
A993E7F1 ()2FF9 ()2FF9 ()
A994[4]:173E7F2 ()2FFA ()2FFA ()
A995E7F3 ()2FFB ()2FFB ()
FE50E815 ()2E81 ()2E81 ()
FE51E816 ()E816 ()20087 (𠂇)
FE52E817 ()E817 ()20089 (𠂉)
FE53E818 ()E818 ()200CC (𠃌)
FE54E819 ()2E84 ()2E84 ()
FE55E81A ()3473 ()3473 ()
FE56E81B ()3447 ()3447 ()
FE57E81C ()2E88 ()2E88 ()
FE58E81D ()2E8B ()2E8B ()
FE59E81E ()E81E ()9FB4 ()
FE5AE81F ()359E ()359E ()
FE5BE820 ()361A ()361A ()
FE5CE821 ()360E ()360E ()
FE5DE822 ()2E8C ()2E8C ()
FE5EE823 ()2E97 ()2E97 ()
FE5FE824 ()396E ()396E ()
FE60E825 ()3918 ()3918 ()
FE61E826 ()E826 ()9FB5 ()
FE62E827 ()39CF ()39CF ()
FE63E828 ()39DF ()39DF ()
FE64E829 ()3A73 ()3A73 ()
FE65E82A ()39D0 ()39D0 ()
FE66E82B ()E82B ()9FB6 ()
FE67E82C ()E82C ()9FB7 ()
FE68E82D ()3B4E ()3B4E ()
FE69E82E ()3C6E ()3C6E ()
FE6AE82F ()3CE0 ()3CE0 ()
FE6BE830 ()2EA7 ()2EA7 ()
FE6CE831 ()E831 ()215D7 (𡗗)
FE6DE832 ()E832 ()9FB8 ()
FE6EE833 ()2EAA ()2EAA ()
FE6FE834 ()4056 ()4056 ()
FE70E835 ()415F ()415F ()
FE71E836 ()2EAE ()2EAE ()
FE72E837 ()4337 ()4337 ()
FE73E838 ()2EB3 ()2EB3 ()
FE74E839 ()2EB6 ()2EB6 ()
FE75E83A ()2EB7 ()2EB7 ()
FE76E83B ()E83B ()2298F (𢦏)
FE77E83C ()43B1 ()43B1 ()
FE78E83D ()43AC ()43AC ()
FE79E83E ()2EBB ()2EBB ()
FE7AE83F ()43DD ()43DD ()
FE7BE840 ()44D6 ()44D6 ()
FE7CE841 ()4661 ()4661 ()
FE7DE842 ()464C ()464C ()
FE7EE843 ()E843 ()9FB9 ()
FE80E844 ()4723 ()4723 ()
FE81E845 ()4729 ()4729 ()
FE82E846 ()477C ()477C ()
FE83E847 ()478D ()478D ()
FE84E848 ()2ECA ()2ECA ()
FE85E849 ()4947 ()4947 ()
FE86E84A ()497A ()497A ()
FE87E84B ()497D ()497D ()
FE88E84C ()4982 ()4982 ()
FE89E84D ()4983 ()4983 ()
FE8AE84E ()4985 ()4985 ()
FE8BE84F ()4986 ()4986 ()
FE8CE850 ()499F ()499F ()
FE8DE851 ()499B ()499B ()
FE8EE852 ()49B7 ()49B7 ()
FE8FE853 ()49B6 ()49B6 ()
FE90E854 ()E854 ()9FBA ()
FE91E855 ()E855 ()241FE (𤇾)
FE92E856 ()4CA3 ()4CA3 ()
FE93E857 ()4C9F ()4C9F ()
FE94E858 ()4CA0 ()4CA0 ()
FE95E859 ()4CA1 ()4CA1 ()
FE96E85A ()4C77 ()4C77 ()
FE97E85B ()4CA2 ()4CA2 ()
FE98E85C ()4D13 ()4D13 ()
FE99E85D ()4D14 ()4D14 ()
FE9AE85E ()4D15 ()4D15 ()
FE9BE85F ()4D16 ()4D16 ()
FE9CE860 ()4D17 ()4D17 ()
FE9DE861 ()4D18 ()4D18 ()
FE9EE862 ()4D19 ()4D19 ()
FE9FE863 ()4DAE ()4DAE ()
FEA0E864 ()E864 ()9FBB ()

字节结构

GB 18030包含三种长度的编码:单字节的ASCII、双字节的GBK(略带扩展)、以及用于填补所有Unicode码位的四字节UTF区段。GBK双字节部分通过查表定义,而四字节部分则根据之前两个部分没有提到的通用字符集码位顺序填补。由于和GBK兼容,GB 18030在搜索ASCII字符时也需要使用特别代码进行判断。

GB 18030编码[5]:3[6]:252[7]
GB 18030 码位 Unicode[lower-alpha 1]
字节1(最高位)字节2字节3字节4
007F 128 0000007F
80 错误[lower-alpha 2]
81FE40FE 除去 7F[lower-alpha 3] 23940 0080FFFF 除去 D800DFFF[lower-alpha 4]
8184 3039 81FE 3039 39420
85 — (12600) (未来字符拓展)
868F — (126000) (未来汉字拓展)
D800DFFF[lower-alpha 5]
90E3 3039 81FE 3039 1048576 1 000010 FFFF
E4FC — (315000) (未来标准拓展)
FDFE — (25200) (用户造字区域)
FF 错误
总计 1112064

一、二字节区段基本就是GBK编码,另外加上了专门的欧元字符、竖排版本的标点符号,以及造字区对Unicode造字区的对应。四字节区段可以视作两段形似GBK二字节区段结构的部分,每段的第一字节可以为0x81到0xFE,第二字节为0x30到0x39。由于结构类似,能够安全于GBK的字符串搜索程序对于GB 18030来说也基本安全(正如基于字节的搜索程序对于EUCUTF-8也基本安全一般。)

四字节区段总共可以表达1,587,600(126×10×126×10)种字符,足以覆盖Unicode的1,112,064(17×65536 − 2048个代理对)个有效码位。

由于四字节区段通过填空定义,要写出处理这段转换的程序需要同时知道GBK的覆盖范围,并不简单:

U+00DE (Þ) → 81 30 89 37
U+00DF (ß) → 81 30 89 38
U+00E0 (à) → A8 A4
U+00E1 (á) → A8 A2
U+00E2 (â) → 81 30 89 39
U+00E3 (ã) → 81 30 8A 30

WHATWGW3C的GB 18030实现通过一张“位置偏移表”记录GB 18030四字节区中连续的几块碎片,以便高效处理转换。[9]ICU[7]和glibc也都对大块连续的区域使用了类似的策略。

版本

参见

注釋

  1. 包含66个“非字符”
  2. 虽然两个版本的GB 18030都认为此码位不正确(指正式发布的,GB 18030-2000的报批稿却同时有单双字节欧元[8]),但是ICU的定义错误称其为有效码位。出于GBK兼容性考虑,WHATWG的GBK/GB 18030二合一解码器将此字节视作欧元符号。
  3. 参见汉字内码扩展规范条目细分。
  4. 上一行的码位使用二字节GBK编码,下一行的码位按照顺序以四字节编码补全覆盖面。此段最后一个实际用上的编码为U+FFFF的84 31 A4 39(2005版239页),不过划区时画到了84 39 FE 39
  5. 这些为代理对字符,在UTF-16之外没有实际意义。

参考资料

  1. CESI. [GB18030 compliance FAQ]. CESI Certification Center. 2009-07-08 [2016-10-12]. (原始内容存档于2016-09-28). Page 4 同时达到以下两个要求的产品,为符合GB 18030-2005强制部分的产品:①产品可以正确输入、输出、处理GB 18030-2005强制部分规定的全部汉字字符;②产品可以正确识别GB 18030-2005强制性部分规定的全部汉字字符对应的编码。 [A product compliant with the mandatory part of GB 18030 must be able to correctly a) input, output and process all Chinese characters defined in the mandatory set; b) recognize encodings for characters in the mandatory set.]
  2. . WHATWG. [2016-09-11]. (原始内容存档于2015-02-04).
  3. . GlyphWiki. [11 September 2016]. (原始内容存档于2019-02-16).
  4. Lunde, Ken. . O'Reilly Media, Inc. December 2008 [11 September 2016]. ISBN 978-0-596-51447-1.
  5. Standardization Administration of China (SAC). . 2005-11-18.
  6. Standardization Administration of China (SAC). . 2000-03-17.
  7. Authoritative mapping table between GB18030-2000 and Unicode 页面存档备份,存于. ICU – International Components for Unicode. 2001-02-21. Accessed 2016-09-04.
  8. (PDF). [2017-08-15]. (原始内容 (PDF)存档于2017-08-15).
  9. . WHATWG. [2016-09-24]. (原始内容存档于2015-02-04).

外部連結

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.