GB 18030
GB 18030,全称《》,是中华人民共和国国家标准所规定的变长多字节字符集。其对GB 2312-1980完全向后兼容,与GBK基本向后兼容,并支持Unicode(GB 13000)的所有码位。
GB 18030 字节分配。“半码"(Half codes)指成对使用的四字节部分。 | |
MIME / IANA | GB18030 |
---|---|
别名 | 代码页 54936 |
语言 | 国际,但以中文为主 |
标准 | GB 18030-2022, GB 18030-2005, GB 18030-2000 |
分类 | Unicode转换格式、扩展ASCII、[lower-alpha 1]变长编码、CJK |
拓展自 | EUC-CN, GBK |
变换/编码 | ISO 10646(Unicode) |
前用 | GBK, GB2312 |
GB 18030主要有以下特点:
- 采用变长多字节编码,每个字可以由1个、2个或4个字节组成。
- 编码空间庞大,最多可定义161万个字元。
- 完全支持Unicode,无需动用造字区即可支持中国国內少数民族文字、中日韩和繁体汉字以及emoji等字符。
标准内容
本规格第一版 GB 18030-2000《》”是由电子工业标准化研究所起草,由国家质量技术监督局于2000年3月17日发布和实施。该标准在GBK基础上增加了CJK统一汉字扩充A的汉字。
本规格第二版为 GB 18030-2005《》,为国家质量监督检验总局和中国国家标准化管理委员会于2005年11月8日发布,2006年5月1日实施;是在GB18030-2000基础上增加了CJK统一汉字扩充B的汉字。GB 18030-2005 共收录汉字70,244个。此标准内的单字节编码部分、双字节编码部分,和四字节编码部分收录的少数中日韩统一表意文字扩展A区汉字,为强制性标准。其他部分则属于规模性标准。在中华人民共和国境内所有软件产品,都需要支持这个同时包含单字节、双字节和四字节编码的规格。[1]:4
GB 18030 的第三版本,且最新版本为 GB 18030-2022《》,为国家市场监督管理总局和国家标准化管理委员会于2022年7月19日发布、2023年8月1日实施。此版本在保留总体结构的基础上,从条文强制改为全文强制,但增加了“实现的级别”一章,定义了三个实现级别,并要求“任何本文件使用的产品均应满足实现级别1”,与上一版的“部分强制”相比,实际要求“增加四字节编码部分的CJK统一汉字”的 66 字。另外,该版本完整覆盖 2013 年发布的《通用规范汉字表》,在资料性附录E中明确了《通用规范汉字表》8105 个汉字的代码位置,并规定要通过“实现级别2”来支持。
Unicode支持
GB 字节串 | Unicode 码位 | |
---|---|---|
GB 18030-2000 | GB 18030-2005 | |
A8 BC (ḿ) | U+E7C7 | U+1E3F ḿ |
81 35 F4 37 | U+1E3F ḿ | U+E7C7 |
GB 18030在其标准中以码形式定义了除去代理对外的全部Unicode码位的定义。由于GB 18030基本上是绕开已分配的码点去指定需要对应的Unicode,其变换和UTF-8相比要复杂得多。在日常实现上,常常会直接使用一个偏移量表[2]。
GB 18030—2005与GB 18030—2000、GBK相比,去除了很多原来映射在PUA中的编码;后来剩余的24个PUA码位也在Unicode 4.1中加上。
在GB 18030—2022中,剩余的24个PUA码位已经被去除或更改对应,所有有意义字符都已经映射到正式的 Unicode 码位上。[3]
GB 字节串 | Unicode 码位 [a] | |||
---|---|---|---|---|
GBK 1.0[4] | GB 18030-2005 | Unicode 4.1 | GB 18030-2022[3] | |
A6 D9[5]:108 | U+E78D |
U+FE10 ︐ | ||
A6 DA | U+E78E | U+FE12 ︒ | ||
A6 DB | U+E78F | U+FE11 ︑ | ||
A6 DC | U+E790 | U+FE13 ︓ | ||
A6 DD | U+E791 | U+FE14 ︔ | ||
A6 DE | U+E792 | U+FE15 ︕ | ||
A6 DF | U+E793 | U+FE16 ︖ | ||
A6 EC | U+E794 | U+FE17 ︗ | ||
A6 ED | U+E795 | U+FE18 ︘ | ||
A6 F3 | U+E796 | U+FE19 ︙ | ||
A8 BC | U+E7C7 | U+1E3F ḿ | ||
A8 BF | U+E7C8 | U+01F9 ǹ | ||
A9 89 | U+E7E7 | U+303E 〾 | ||
A9 8A | U+E7E8 | U+2FF0 ⿰ | ||
A9 8B | U+E7E9 | U+2FF1 ⿱ | ||
A9 8C | U+E7EA | U+2FF2 ⿲ | ||
A9 8D | U+E7EB | U+2FF3 ⿳ | ||
A9 8E | U+E7EC | U+2FF4 ⿴ | ||
A9 8F | U+E7ED | U+2FF5 ⿵ | ||
A9 90 | U+E7EE | U+2FF6 ⿶ | ||
A9 91 | U+E7EF | U+2FF7 ⿷ | ||
A9 92 | U+E7F0 | U+2FF8 ⿸ | ||
A9 93 | U+E7F1 | U+2FF9 ⿹ | ||
A9 94[5]:173 | U+E7F2 | U+2FFA ⿺ | ||
A9 95 | U+E7F3 | U+2FFB ⿻ | ||
FE 50 | U+E815 | U+2E81 ⺁ | ||
FE 51 | U+E816 | U+20087 𠂇 [b] | U+E816 | |
FE 52 | U+E817 | U+20089 𠂉 [c] | U+E817 | |
FE 53 | U+E818 | U+200CC 𠃌 [d] | U+E818 | |
FE 54 | U+E819 | U+2E84 ⺄ | ||
FE 55 | U+E81A | U+3473 㑳 | ||
FE 56 | U+E81B | U+3447 㑇 | ||
FE 57 | U+E81C | U+2E88 ⺈ | ||
FE 58 | U+E81D | U+2E8B ⺋ | ||
FE 59 | U+E81E | U+9FB4 龴 | ||
FE 5A | U+E81F | U+359E 㖞 | ||
FE 5B | U+E820 | U+361A 㘚 | ||
FE 5C | U+E821 | U+360E 㘎 | ||
FE 5D | U+E822 | U+2E8C ⺌ | ||
FE 5E | U+E823 | U+2E97 ⺗ | ||
FE 5F | U+E824 | U+396E 㥮 | ||
FE 60 | U+E825 | U+3918 㤘 | ||
FE 61 | U+E826 | U+9FB5 龵 | ||
FE 62 | U+E827 | U+39CF 㧏 | ||
FE 63 | U+E828 | U+39DF 㧟 | ||
FE 64 | U+E829 | U+3A73 㩳 | ||
FE 65 | U+E82A | U+39D0 㧐 | ||
FE 66 | U+E82B | U+9FB6 龶 | ||
FE 67 | U+E82C | U+9FB7 龷 | ||
FE 68 | U+E82D | U+3B4E 㭎 | ||
FE 69 | U+E82E | U+3C6E 㱮 | ||
FE 6A | U+E82F | U+3CE0 㳠 | ||
FE 6B | U+E830 | U+2EA7 ⺧ | ||
FE 6C | U+E831 | U+215D7 𡗗 [e] | U+E831 | |
FE 6D | U+E832 | U+9FB8 龸 | ||
FE 6E | U+E833 | U+2EAA ⺪ | ||
FE 6F | U+E834 | U+4056 䁖 | ||
FE 70 | U+E835 | U+415F 䅟 | ||
FE 71 | U+E836 | U+2EAE ⺮ | ||
FE 72 | U+E837 | U+4337 䌷 | ||
FE 73 | U+E838 | U+2EB3 ⺳ | ||
FE 74 | U+E839 | U+2EB6 ⺶ | ||
FE 75 | U+E83A | U+2EB7 ⺷ | ||
FE 76 | U+E83B | U+2298F 𢦏 [f] | U+E83B | |
FE 77 | U+E83C | U+43B1 䎱 | ||
FE 78 | U+E83D | U+43AC 䎬 | ||
FE 79 | U+E83E | U+2EBB ⺻ | ||
FE 7A | U+E83F | U+43DD 䏝 | ||
FE 7B | U+E840 | U+44D6 䓖 | ||
FE 7C | U+E841 | U+4661 䙡 | ||
FE 7D | U+E842 | U+464C 䙌 | ||
FE 7E | U+E843 | U+9FB9 龹 | ||
FE 80 | U+E844 | U+4723 䜣 | ||
FE 81 | U+E845 | U+4729 䜩 | ||
FE 82 | U+E846 | U+477C 䝼 | ||
FE 83 | U+E847 | U+478D 䞍 | ||
FE 84 | U+E848 | U+2ECA ⻊ | ||
FE 85 | U+E849 | U+4947 䥇 | ||
FE 86 | U+E84A | U+497A 䥺 | ||
FE 87 | U+E84B | U+497D 䥽 | ||
FE 88 | U+E84C | U+4982 䦂 | ||
FE 89 | U+E84D | U+4983 䦃 | ||
FE 8A | U+E84E | U+4985 䦅 | ||
FE 8B | U+E84F | U+4986 䦆 | ||
FE 8C | U+E850 | U+499F 䦟 | ||
FE 8D | U+E851 | U+499B 䦛 | ||
FE 8E | U+E852 | U+49B7 䦷 | ||
FE 8F | U+E853 | U+49B6 䦶 | ||
FE 90 | U+E854 | U+9FBA 龺 | ||
FE 91 | U+E855 | U+241FE 𤇾 [g] | U+E855 | |
FE 92 | U+E856 | U+4CA3 䲣 | ||
FE 93 | U+E857 | U+4C9F 䲟 | ||
FE 94 | U+E858 | U+4CA0 䲠 | ||
FE 95 | U+E859 | U+4CA1 䲡 | ||
FE 96 | U+E85A | U+4C77 䱷 | ||
FE 97 | U+E85B | U+4CA2 䲢 | ||
FE 98 | U+E85C | U+4D13 䴓 | ||
FE 99 | U+E85D | U+4D14 䴔 | ||
FE 9A | U+E85E | U+4D15 䴕 | ||
FE 9B | U+E85F | U+4D16 䴖 | ||
FE 9C | U+E860 | U+4D17 䴗 | ||
FE 9D | U+E861 | U+4D18 䴘 | ||
FE 9E | U+E862 | U+4D19 䴙 | ||
FE 9F | U+E863 | U+4DAE 䶮 | ||
FE A0 | U+E864 | U+9FBB 龻 | ||
备注 |
字节结构
GB 18030包含三种长度的编码:单字节的ASCII、双字节的GBK(略带扩展)、以及用于填补所有Unicode码位的四字节UTF区段。GBK双字节部分通过查表定义,而四字节部分则根据之前两个部分没有提到的通用字符集码位顺序填补。由于和GBK兼容,GB 18030在搜索ASCII字符时也需要使用特别代码进行判断。
GB 18030 | 码位数 | Unicode[lower-alpha 2] | |||
---|---|---|---|---|---|
字节1(最高位) | 字节2 | 字节3 | 字节4 | ||
00 – 7F |
128 | 0000 – 007F | |||
80 |
— | 错误[lower-alpha 3] | |||
81 – FE | 40 – FE 除去 7F [lower-alpha 4] |
940 23 | 0080 – FFFF 除去 D800 – DFFF [lower-alpha 5] | ||
81 – 84 |
30 – 39 |
81 – FE |
30 – 39 |
420 39 | |
85 |
— (600) 12 | (未来字符拓展) | |||
86 – 8F |
— (000) 126 | (未来汉字拓展) | |||
无 | — | D800 – DFFF [lower-alpha 6] | |||
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四字节区中连续的几块碎片,以便高效处理转换。[10]ICU[8]和glibc也都对大块连续的区域使用了类似的策略。
版本
- GB 18030-2000,兼容Unicode 3.0中日韩统一表意文字(即扩展A区),共收27,533个汉字;2000年3月17日发布、2000年7月1日实施。
- GB 18030-2005,更新至Unicode 3.1中日韩统一表意文字(即扩展B区),并刊载少数民族包括朝鲜文、蒙古文(包括满文、托忒文、锡伯文、阿礼嘎礼文)、德宏傣文、藏文、维吾尔文/哈萨克文/柯尔克兹文和彝文的文字。共有70,244个汉字;2005年11月8日发布、2006年5月1日实施。
- GB 18030-2022,更新至 Unicode 11 中日韩统一表意文字(增补了基本区的 66 个字,并在扩展 A、B区的基础上增加了扩展 C、D、E、F 区),新增康熙部首,以及滇东北苗文、傈僳文、西双版纳新傣文、西双版纳老傣文、德宏傣文等少数民族文字以及蒙古文 BIRGA 符号,共收录汉字87,887个和汉字部首228个,比上一版增加录入了1.7万余个生僻汉字;于2022年7月19日发布、2023年8月1日实施。[11]
注釋
- 严格来说不是,因为ASCII字节会出现在GBK拓展二字节部分的后半字
- 包含66个“非字符”
- 虽然两个版本的GB 18030都认为此码位不正确(指正式发布的,GB 18030-2000的报批稿却同时有单双字节欧元[9]),但是ICU的定义错误称其为有效码位。出于GBK兼容性考虑,WHATWG的GBK/GB 18030二合一解码器将此字节视作欧元符号。
- 参见汉字内码扩展规范条目细分。
- 上一行的码位使用二字节GBK编码,下一行的码位按照顺序以四字节编码补全覆盖面。此段最后一个实际用上的编码为U+FFFF的
84 31 A4 39
(2005版239页),不过划区时画到了84 39 FE 39
。 - 这些为代理对字符,在UTF-16之外没有实际意义。
参考资料
- 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).
- Lunde, Dr Ken. . Medium. 4 August 2022 [7 August 2022]. (原始内容存档于2022-08-07) (英语).
- . 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).
- . 微信公众平台. 2022-08-12 [2024-01-28]. (原始内容存档于2024-01-28) (中文).
外部連結
- 新浪网:关于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 支持包(页面存档备份,存于)
- GB18030与Unicode对照表(页面存档备份,存于)