GB 18030
GB 18030,全称《》,是中华人民共和国国家标准所规定的变长多字节字符集。其对GB 2312-1980完全向后兼容,与GBK基本向后兼容,并支持Unicode(GB 13000)的所有码位。GB 18030共收录汉字70,244个。
GB 18030 字节分配。“半码"(Half codes)指成对使用的四字节部分。 | |
MIME / IANA | GB18030 |
---|---|
别名 | 代码页 54936 |
语言 | 国际,但以中文为主 |
标准 | GB 18030-2005, GB 18030-2000 |
分类 | Unicode转换格式、扩展ASCII、[lower-alpha 1]变长编码、CJK |
拓展自 | EUC-CN, GBK |
变换/编码 | ISO 10646(Unicode) |
前用 | GBK, GB2312 |
| |
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-2005 | Unicode 4.1 | |
A6D9[4]:108 | E78D () | FE10 (︐) | |
A6DA | E78E () | FE12 (︒) | |
A6DB | E78F () | FE11 (︑) | |
A6DC | E790 () | FE13 (︓) | |
A6DD | E791 () | FE14 (︔) | |
A6DE | E792 () | FE15 (︕) | |
A6DF | E793 () | FE16 (︖) | |
A6EC | E794 () | FE17 (︗) | |
A6ED | E795 () | FE18 (︘) | |
A6F3 | E796 () | FE19 (︙) | |
A8BC | E7C7 () | 1E3F (ḿ) | 1E3F (ḿ) |
A8BF | E7C8 () | 01F9 (ǹ) | 01F9 (ǹ) |
A989 | E7E7 () | 303E (〾) | 303E (〾) |
A98A | E7E8 () | 2FF0 (⿰) | 2FF0 (⿰) |
A98B | E7E9 () | 2FF1 (⿱) | 2FF1 (⿱) |
A98C | E7EA () | 2FF2 (⿲) | 2FF2 (⿲) |
A98D | E7EB () | 2FF3 (⿳) | 2FF3 (⿳) |
A98E | E7EC () | 2FF4 (⿴) | 2FF4 (⿴) |
A98F | E7ED () | 2FF5 (⿵) | 2FF5 (⿵) |
A990 | E7EE () | 2FF6 (⿶) | 2FF6 (⿶) |
A991 | E7EF () | 2FF7 (⿷) | 2FF7 (⿷) |
A992 | E7F0 () | 2FF8 (⿸) | 2FF8 (⿸) |
A993 | E7F1 () | 2FF9 (⿹) | 2FF9 (⿹) |
A994[4]:173 | E7F2 () | 2FFA (⿺) | 2FFA (⿺) |
A995 | E7F3 () | 2FFB (⿻) | 2FFB (⿻) |
FE50 | E815 () | 2E81 (⺁) | 2E81 (⺁) |
FE51 | E816 () | E816 () | 20087 (𠂇) |
FE52 | E817 () | E817 () | 20089 (𠂉) |
FE53 | E818 () | E818 () | 200CC (𠃌) |
FE54 | E819 () | 2E84 (⺄) | 2E84 (⺄) |
FE55 | E81A () | 3473 (㑳) | 3473 (㑳) |
FE56 | E81B () | 3447 (㑇) | 3447 (㑇) |
FE57 | E81C () | 2E88 (⺈) | 2E88 (⺈) |
FE58 | E81D () | 2E8B (⺋) | 2E8B (⺋) |
FE59 | E81E () | E81E () | 9FB4 (龴) |
FE5A | E81F () | 359E (㖞) | 359E (㖞) |
FE5B | E820 () | 361A (㘚) | 361A (㘚) |
FE5C | E821 () | 360E (㘎) | 360E (㘎) |
FE5D | E822 () | 2E8C (⺌) | 2E8C (⺌) |
FE5E | E823 () | 2E97 (⺗) | 2E97 (⺗) |
FE5F | E824 () | 396E (㥮) | 396E (㥮) |
FE60 | E825 () | 3918 (㤘) | 3918 (㤘) |
FE61 | E826 () | E826 () | 9FB5 (龵) |
FE62 | E827 () | 39CF (㧏) | 39CF (㧏) |
FE63 | E828 () | 39DF (㧟) | 39DF (㧟) |
FE64 | E829 () | 3A73 (㩳) | 3A73 (㩳) |
FE65 | E82A () | 39D0 (㧐) | 39D0 (㧐) |
FE66 | E82B () | E82B () | 9FB6 (龶) |
FE67 | E82C () | E82C () | 9FB7 (龷) |
FE68 | E82D () | 3B4E (㭎) | 3B4E (㭎) |
FE69 | E82E () | 3C6E (㱮) | 3C6E (㱮) |
FE6A | E82F () | 3CE0 (㳠) | 3CE0 (㳠) |
FE6B | E830 () | 2EA7 (⺧) | 2EA7 (⺧) |
FE6C | E831 () | E831 () | 215D7 (𡗗) |
FE6D | E832 () | E832 () | 9FB8 (龸) |
FE6E | E833 () | 2EAA (⺪) | 2EAA (⺪) |
FE6F | E834 () | 4056 (䁖) | 4056 (䁖) |
FE70 | E835 () | 415F (䅟) | 415F (䅟) |
FE71 | E836 () | 2EAE (⺮) | 2EAE (⺮) |
FE72 | E837 () | 4337 (䌷) | 4337 (䌷) |
FE73 | E838 () | 2EB3 (⺳) | 2EB3 (⺳) |
FE74 | E839 () | 2EB6 (⺶) | 2EB6 (⺶) |
FE75 | E83A () | 2EB7 (⺷) | 2EB7 (⺷) |
FE76 | E83B () | E83B () | 2298F (𢦏) |
FE77 | E83C () | 43B1 (䎱) | 43B1 (䎱) |
FE78 | E83D () | 43AC (䎬) | 43AC (䎬) |
FE79 | E83E () | 2EBB (⺻) | 2EBB (⺻) |
FE7A | E83F () | 43DD (䏝) | 43DD (䏝) |
FE7B | E840 () | 44D6 (䓖) | 44D6 (䓖) |
FE7C | E841 () | 4661 (䙡) | 4661 (䙡) |
FE7D | E842 () | 464C (䙌) | 464C (䙌) |
FE7E | E843 () | E843 () | 9FB9 (龹) |
FE80 | E844 () | 4723 (䜣) | 4723 (䜣) |
FE81 | E845 () | 4729 (䜩) | 4729 (䜩) |
FE82 | E846 () | 477C (䝼) | 477C (䝼) |
FE83 | E847 () | 478D (䞍) | 478D (䞍) |
FE84 | E848 () | 2ECA (⻊) | 2ECA (⻊) |
FE85 | E849 () | 4947 (䥇) | 4947 (䥇) |
FE86 | E84A () | 497A (䥺) | 497A (䥺) |
FE87 | E84B () | 497D (䥽) | 497D (䥽) |
FE88 | E84C () | 4982 (䦂) | 4982 (䦂) |
FE89 | E84D () | 4983 (䦃) | 4983 (䦃) |
FE8A | E84E () | 4985 (䦅) | 4985 (䦅) |
FE8B | E84F () | 4986 (䦆) | 4986 (䦆) |
FE8C | E850 () | 499F (䦟) | 499F (䦟) |
FE8D | E851 () | 499B (䦛) | 499B (䦛) |
FE8E | E852 () | 49B7 (䦷) | 49B7 (䦷) |
FE8F | E853 () | 49B6 (䦶) | 49B6 (䦶) |
FE90 | E854 () | E854 () | 9FBA (龺) |
FE91 | E855 () | E855 () | 241FE (𤇾) |
FE92 | E856 () | 4CA3 (䲣) | 4CA3 (䲣) |
FE93 | E857 () | 4C9F (䲟) | 4C9F (䲟) |
FE94 | E858 () | 4CA0 (䲠) | 4CA0 (䲠) |
FE95 | E859 () | 4CA1 (䲡) | 4CA1 (䲡) |
FE96 | E85A () | 4C77 (䱷) | 4C77 (䱷) |
FE97 | E85B () | 4CA2 (䲢) | 4CA2 (䲢) |
FE98 | E85C () | 4D13 (䴓) | 4D13 (䴓) |
FE99 | E85D () | 4D14 (䴔) | 4D14 (䴔) |
FE9A | E85E () | 4D15 (䴕) | 4D15 (䴕) |
FE9B | E85F () | 4D16 (䴖) | 4D16 (䴖) |
FE9C | E860 () | 4D17 (䴗) | 4D17 (䴗) |
FE9D | E861 () | 4D18 (䴘) | 4D18 (䴘) |
FE9E | E862 () | 4D19 (䴙) | 4D19 (䴙) |
FE9F | E863 () | 4DAE (䶮) | 4DAE (䶮) |
FEA0 | E864 () | E864 () | 9FBB (龻) |
字节结构
GB 18030包含三种长度的编码:单字节的ASCII、双字节的GBK(略带扩展)、以及用于填补所有Unicode码位的四字节UTF区段。GBK双字节部分通过查表定义,而四字节部分则根据之前两个部分没有提到的通用字符集码位顺序填补。由于和GBK兼容,GB 18030在搜索ASCII字符时也需要使用特别代码进行判断。
GB 18030 | 码位数 | Unicode[lower-alpha 1] | |||
---|---|---|---|---|---|
字节1(最高位) | 字节2 | 字节3 | 字节4 | ||
00 – 7F |
128 | 0000 – 007F | |||
80 |
— | 错误[lower-alpha 2] | |||
81 – FE | 40 – FE 除去 7F [lower-alpha 3] |
940 23 | 0080 – FFFF 除去 D800 – DFFF [lower-alpha 4] | ||
81 – 84 |
30 – 39 |
81 – FE |
30 – 39 |
420 39 | |
85 |
— (600) 12 | (未来字符拓展) | |||
86 – 8F |
— (000) 126 | (未来汉字拓展) | |||
无 | — | D800 – DFFF [lower-alpha 5] | |||
90 – E3 |
30 – 39 |
81 – FE |
30 – 39 |
048576 1 | 1 0000 – 10 FFFF |
E4 – FC |
— (000) 315 | (未来标准拓展) | |||
FD – FE |
— (200) 25 | (用户造字区域) | |||
FF |
— | 错误 | |||
总计 | 112064 1 |
一、二字节区段基本就是GBK编码,另外加上了专门的欧元字符、竖排版本的标点符号,以及造字区对Unicode造字区的对应。四字节区段可以视作两段形似GBK二字节区段结构的部分,每段的第一字节可以为0x81到0xFE,第二字节为0x30到0x39。由于结构类似,能够安全于GBK的字符串搜索程序对于GB 18030来说也基本安全(正如基于字节的搜索程序对于EUC、UTF-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
WHATWG和W3C的GB 18030实现通过一张“位置偏移表”记录GB 18030四字节区中连续的几块碎片,以便高效处理转换。[9]ICU[7]和glibc也都对大块连续的区域使用了类似的策略。
版本
注釋
参考资料
- 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.]
- . WHATWG. [2016-09-11]. (原始内容存档于2015-02-04).
- . GlyphWiki. [11 September 2016]. (原始内容存档于2019-02-16).
- Lunde, Ken. . O'Reilly Media, Inc. December 2008 [11 September 2016]. ISBN 978-0-596-51447-1.
- Standardization Administration of China (SAC). . 2005-11-18.
- Standardization Administration of China (SAC). . 2000-03-17.
- Authoritative mapping table between GB18030-2000 and Unicode 页面存档备份,存于. ICU – International Components for Unicode. 2001-02-21. Accessed 2016-09-04.
- (PDF). [2017-08-15]. (原始内容 (PDF)存档于2017-08-15).
- . WHATWG. [2016-09-24]. (原始内容存档于2015-02-04).
外部連結
- 新浪网:关于GB18030汉字编码标准集页面存档备份,存于
- 新浪网:电脑汉字不够用 计算机也要“扫盲”页面存档备份,存于
- Update on GB 18030:2005, Ken Lunde, 2006-11-13页面存档备份,存于
- http://source.icu-project.org/repos/icu/data/trunk/charset/data/xml/gb-18030-2000.xml页面存档备份,存于
- ICU Converter Explorer: GB18030页面存档备份,存于(英语)
- 微软有关GB18030编码的介绍(英语)
- 微软:老旧软体可能发生的兼容问題页面存档备份,存于(英语)
- 微软 Win2000 GB18030 支持包页面存档备份,存于
- GB 18030与Unicode对照表页面存档备份,存于