GB 18030

GB 18030，全称《-{zh:信息技术 中文编码字符集;zh-hans:信息技术 中文编码字符集;zh-hant:信息技術 中文編碼字符集}-》，是中华人民共和国国家标准所规定的变长多字节字符集。其对GB 2312-1980完全向后兼容，与GBK基本向后兼容，并支持Unicode（GB 13000）的所有码位。

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

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

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

标准内容 
本规格第一版 GB 18030-2000《-{zh:信息技术　信息交换用汉字编码字符集　基本集的扩充;zh-hans:信息技术　信息交换用汉字编码字符集　基本集的扩充;zh-hant:信息技術　信息交換用漢字編碼字符集　基本集的擴充}-》”是由-{zh:中华人民共和国信息产业部;zh-hans:中华人民共和国信息产业部;zh-hant:中華人民共和國信息產業部}-电子工业标准化研究所起草，由国家质-{}-量技术监督局于2000年3月17日发布和实施。该标准在GBK基础上增加了CJK统一汉字扩充A的汉字。

本规格第二版为 GB 18030-2005《-{zh:信息技术　中文编码字符集;zh-hans:信息技术　中文编码字符集;zh-hant:信息技術　中文編碼字符集}-》，为国家质量监督检验总局和中国国家标准化管理委员会于2005年11月8日发布，2006年5月1日实施；是在GB18030-2000基础上增加了CJK统一汉字扩充B的汉字。GB 18030-2005 共收录汉字70,244个。此标准内的单字节编码部分、双字节编码部分，和四字节编码部分收录的少数中日韩统一表意文字扩展A区汉字，为强制性标准。其他部分则属于规模性标准。在中华人民共和国境内所有软件产品，都需要支持这个同时包含单字节、双字节和四字节编码的规格。

GB 18030 的第三版本，且最新版本为 GB 18030-2022《-{zh:信息技术　中文编码字符集;zh-hans:信息技术　中文编码字符集;zh-hant:信息技術　中文編碼字符集}-》，为国家市场监督管理总局和国家标准化管理委员会于2022年7月19日发布、2023年8月1日实施。此版本在保留总体结构的基础上，从条文强制改为全文强制，但增加了“实现的级别”一章，定义了三个实现级别，并要求“任何本文件使用的产品均应满足实现级别1”，与上一版的“部分强制”相比，实际要求“增加四字节编码部分的CJK统一汉字”的 66 字。另外，该版本完整覆盖 2013 年发布的《通用规范汉字表》，在资料性附录E中明确了《通用规范汉字表》8105 个汉字的代码位置，并规定要通过“实现级别2”来支持。

Unicode支持

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

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

在GB 18030—2022中，剩余的24个PUA码位已经被去除或更改对应，所有有意义字符都已经映射到正式的 Unicode 码位上。

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

一、二字节区段基本就是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四字节区中连续的几块碎片，以便高效处理转换。ICU和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日实施。

参见 
国家标准代码
GBK
中文电码
1983年《标准电码本（修订本）》的维基词典页面

注釋

参考资料

外部連結 
新浪网：关于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对照表

 

中文信息处理
字符集
18030
中文计算