GB 18030

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

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

GB 18030主要有以下特点:

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

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

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

标准内容

本规格第一版 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 18030版本中Unicode码位的映射更动
GB 字节串Unicode 码位
GB 18030-2000 GB 18030-2005
A8 BC (ḿ)U+E7C7U+1E3F ḿ
81 35 F4 37U+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-2005Unicode 4.1GB 18030-2022[3]
A6 D9[5]:108U+E78D U+FE10
A6 DAU+E78EU+FE12
A6 DBU+E78FU+FE11
A6 DCU+E790U+FE13
A6 DDU+E791U+FE14
A6 DEU+E792U+FE15
A6 DFU+E793U+FE16
A6 ECU+E794U+FE17
A6 EDU+E795U+FE18
A6 F3U+E796U+FE19
A8 BCU+E7C7U+1E3F ḿ
A8 BFU+E7C8U+01F9 ǹ
A9 89U+E7E7U+303E
A9 8AU+E7E8U+2FF0
A9 8BU+E7E9U+2FF1
A9 8CU+E7EAU+2FF2
A9 8DU+E7EBU+2FF3
A9 8EU+E7ECU+2FF4
A9 8FU+E7EDU+2FF5
A9 90U+E7EEU+2FF6
A9 91U+E7EFU+2FF7
A9 92U+E7F0U+2FF8
A9 93U+E7F1U+2FF9
A9 94[5]:173U+E7F2U+2FFA
A9 95U+E7F3U+2FFB
FE 50U+E815U+2E81
FE 51U+E816U+20087 𠂇 [b]U+E816
FE 52U+E817U+20089 𠂉 [c]U+E817
FE 53U+E818U+200CC 𠃌 [d]U+E818
FE 54U+E819U+2E84
FE 55U+E81AU+3473
FE 56U+E81BU+3447
FE 57U+E81CU+2E88
FE 58U+E81DU+2E8B
FE 59U+E81EU+9FB4
FE 5AU+E81FU+359E
FE 5BU+E820U+361A
FE 5CU+E821U+360E
FE 5DU+E822U+2E8C
FE 5EU+E823U+2E97
FE 5FU+E824U+396E
FE 60U+E825U+3918
FE 61U+E826U+9FB5
FE 62U+E827U+39CF
FE 63U+E828U+39DF
FE 64U+E829U+3A73
FE 65U+E82AU+39D0
FE 66U+E82BU+9FB6
FE 67U+E82CU+9FB7
FE 68U+E82DU+3B4E
FE 69U+E82EU+3C6E
FE 6AU+E82FU+3CE0
FE 6BU+E830U+2EA7
FE 6CU+E831U+215D7 𡗗 [e]U+E831
FE 6DU+E832U+9FB8
FE 6EU+E833U+2EAA
FE 6FU+E834U+4056
FE 70U+E835U+415F
FE 71U+E836U+2EAE
FE 72U+E837U+4337
FE 73U+E838U+2EB3
FE 74U+E839U+2EB6
FE 75U+E83AU+2EB7
FE 76U+E83BU+2298F 𢦏 [f]U+E83B
FE 77U+E83CU+43B1
FE 78U+E83DU+43AC
FE 79U+E83EU+2EBB
FE 7AU+E83FU+43DD
FE 7BU+E840U+44D6
FE 7CU+E841U+4661
FE 7DU+E842U+464C
FE 7EU+E843U+9FB9
FE 80U+E844U+4723
FE 81U+E845U+4729
FE 82U+E846U+477C
FE 83U+E847U+478D
FE 84U+E848U+2ECA
FE 85U+E849U+4947
FE 86U+E84AU+497A
FE 87U+E84BU+497D
FE 88U+E84CU+4982
FE 89U+E84DU+4983
FE 8AU+E84EU+4985
FE 8BU+E84FU+4986
FE 8CU+E850U+499F
FE 8DU+E851U+499B
FE 8EU+E852U+49B7
FE 8FU+E853U+49B6
FE 90U+E854U+9FBA
FE 91U+E855U+241FE 𤇾 [g]U+E855
FE 92U+E856U+4CA3
FE 93U+E857U+4C9F
FE 94U+E858U+4CA0
FE 95U+E859U+4CA1
FE 96U+E85AU+4C77
FE 97U+E85BU+4CA2
FE 98U+E85CU+4D13
FE 99U+E85DU+4D14
FE 9AU+E85EU+4D15
FE 9BU+E85FU+4D16
FE 9CU+E860U+4D17
FE 9DU+E861U+4D18
FE 9EU+E862U+4D19
FE 9FU+E863U+4DAE
FE A0U+E864U+9FBB
备注
a.^ 蓝色代表私用区码位
b.^ GB 18030-2022将U+20087 𠂇 映射至0x95329031
c.^ GB 18030-2022将U+20089 𠂉 映射至0x95329033
d.^ GB 18030-2022将U+200CC 𠃌 映射至0x95329730
e.^ GB 18030-2022将U+215D7 𡗗 映射至0x9536B937
f.^ GB 18030-2022将U+2298F 𢦏 映射至0x9630BA35
g.^ GB 18030-2022将U+241FE 𤇾 映射至0x9635B630

字节结构

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

GB 18030编码[6]:3[7]:252[8]
GB 18030 码位 Unicode[lower-alpha 2]
字节1(最高位)字节2字节3字节4
007F 128 0000007F
80 错误[lower-alpha 3]
81FE40FE 除去 7F[lower-alpha 4] 23940 0080FFFF 除去 D800DFFF[lower-alpha 5]
8184 3039 81FE 3039 39420
85 — (12600) (未来字符拓展)
868F — (126000) (未来汉字拓展)
D800DFFF[lower-alpha 6]
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四字节区中连续的几块碎片,以便高效处理转换。[10]ICU[8]和glibc也都对大块连续的区域使用了类似的策略。

版本

参见

注釋

  1. 严格来说不是,因为ASCII字节会出现在GBK拓展二字节部分的后半字
  2. 包含66个“非字符”
  3. 虽然两个版本的GB 18030都认为此码位不正确(指正式发布的,GB 18030-2000的报批稿却同时有单双字节欧元[9]),但是ICU的定义错误称其为有效码位。出于GBK兼容性考虑,WHATWG的GBK/GB 18030二合一解码器将此字节视作欧元符号。
  4. 参见汉字内码扩展规范条目细分。
  5. 上一行的码位使用二字节GBK编码,下一行的码位按照顺序以四字节编码补全覆盖面。此段最后一个实际用上的编码为U+FFFF的84 31 A4 39(2005版239页),不过划区时画到了84 39 FE 39
  6. 这些为代理对字符,在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. Lunde, Dr Ken. . Medium. 4 August 2022 [7 August 2022]. (原始内容存档于2022-08-07) (英语).
  4. . GlyphWiki. [11 September 2016]. (原始内容存档于2019-02-16).
  5. Lunde, Ken. . O'Reilly Media, Inc. December 2008 [11 September 2016]. ISBN 978-0-596-51447-1.
  6. Standardization Administration of China (SAC). . 2005-11-18.
  7. Standardization Administration of China (SAC). . 2000-03-17.
  8. Authoritative mapping table between GB18030-2000 and Unicode 页面存档备份,存于. ICU – International Components for Unicode. 2001-02-21. Accessed 2016-09-04.
  9. (PDF). [2017-08-15]. (原始内容 (PDF)存档于2017-08-15).
  10. . WHATWG. [2016-09-24]. (原始内容存档于2015-02-04).
  11. . 微信公众平台. 2022-08-12 [2024-01-28]. (原始内容存档于2024-01-28) (中文).

外部連結

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