GB 18030

GB 18030（全称《信息技术 中文编码字符集》）是中华人民共和国国家标准简体中文字符集，由中华人民共和国信息产业部提出、信息产业部电子工业标准化研究所归口。其向后兼容并替代GB 2312-1980、GBK和CP936传统编码，并支持Unicode（GB 13000）的所有码位。GB 18030采用变长多字节编码，每个字可以由1个、2个或4个字节组成。其编码空间庞大，最多可定义161万个字元。由于GB 18030完全支持Unicode，无需动用造字区即可支持中日韩统一表意文字、中国国内的少数民族文字以及emoji等字符。GB 18030在微软Windows系统中的代码页为54936。

除编码方法外，GB 18030还包含其他文字和语言以及本标准适用对象的要求。不过，GB 18030不是一个汉字规范，不定义汉字的正式字形；字形由《通用规范汉字表》进行规范。

## 版本

本标准的第一版 GB 18030-2000《信息技术 信息交换用汉字编码字符集 基本集的扩充》由中华人民共和国信息产业部电子工业标准化研究所、北京大学计算机技术研究所、北大方正集团、北京方正新天地信息网络科技有限责任公司、四通集团公司、中国科学院软件研究所、长城软件公司、四通利方公司、中国软件与技术服务股份有限公司、金山软件公司和联想集团起草，由国家质量技术监督局于2000年3月17日发布和实施。此版本兼容Unicode 3.0的中日韩统一表意文字扩展区A，共收录27,533个汉字。

本标准的第二版 GB 18030-2005《信息技术 中文编码字符集》由国家质量监督检验检疫总局和中国国家标准化管理委员会于2005年11月8日发布，并于2006年5月1日实施。此版本兼容Unicode 3.1的中日韩统一表意文字扩展区B，并刊载少数民族包括朝鲜文、蒙古文（包括满文、托忒文、锡伯文、阿礼嘎礼文）、德宏傣文、藏文、维吾尔文／哈萨克文／柯尔克兹文和彝文的文字。共有70,244个汉字。此标准内的单字节编码部分、双字节编码部分，和四字节编码部分收录的少数中日韩统一表意文字扩展区A的汉字，为强制性标准。其他部分则属于规模性标准。在中华人民共和国境内所有软件产品，都需要支持这个同时包含单字节、双字节和四字节编码的规格。

本标准的第三版 GB 18030-2022《信息技术 中文编码字符集》由国家市场监督管理总局和中国国家标准化管理委员会于2022年7月19日发布，并于2023年8月1日实施。此版本兼容到Unicode 11为止的中日韩统一表意文字扩展区C、D、E和F，并新增康熙部首，以及滇东北苗文、傈僳文、西双版纳新傣文、西双版纳老傣文、德宏傣文等少数民族文字以及蒙古文 BIRGA 符号，共收录汉字87,887个和汉字部首228个，比上一版增加录入了1.7万余个生僻汉字。此版本在保留总体结构的基础上，从条文强制改为全文强制，但增加了“实现的级别”一章，定义了三个实现级别：

- 级别1：支持中日韩统一表意文字和中日韩统一表意文字扩展区A的汉字（所有具备中文信息处理和交换功能的产品均应满足此级别。与上一版的“部分强制”相比，实际要求“增加四字节编码部分的CJK统一汉字”的 66 字。）
- 级别2：在级别1的基础上额外支持资料性附录E中明确的《通用规范汉字表》中没有包含在级别1之内的 8105 个汉字（操作系统、数据库管理系统、中间件等系统软件和支撑软件均应满足此级别。）
- 级别3：支持GB 18030-2022中所规定的全部汉字以及康熙部首（GB/T 4754《国民经济行业分类》中任何用于政务服务和公共服务的信息技术产品和信息系统应均满足此级别。）

## Unicode支持

GB 字节串｜Unicode 码位

GB 18030-2000｜GB 18030-2005

A8 BC (ḿ)｜U+E7C7｜1E3F

81 35 F4 37｜1E3F｜U+E7C7

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 字节串｜Unicode 码位 GB18030-PUA-blue

GBK 1.0｜GB 18030-2005｜Unicode 4.1｜GB 18030-2022

A6 D9｜`U+E78D`｜FE10

A6 DA｜`U+E78E`｜FE12

A6 DB｜`U+E78F`｜FE11

A6 DC｜`U+E790`｜FE13

A6 DD｜`U+E791`｜FE14

A6 DE｜`U+E792`｜FE15

A6 DF｜`U+E793`｜FE16

A6 EC｜`U+E794`｜FE17

A6 ED｜`U+E795`｜FE18

A6 F3｜`U+E796`｜FE19

A8 BC｜`U+E7C7`｜1E3F

A8 BF｜`U+E7C8`｜01F9

A9 89｜`U+E7E7`｜303E

A9 8A｜`U+E7E8`｜2FF0

A9 8B｜`U+E7E9`｜2FF1

A9 8C｜`U+E7EA`｜2FF2

A9 8D｜`U+E7EB`｜2FF3

A9 8E｜`U+E7EC`｜2FF4

A9 8F｜`U+E7ED`｜2FF5

A9 90｜`U+E7EE`｜2FF6

A9 91｜`U+E7EF`｜2FF7

A9 92｜`U+E7F0`｜2FF8

A9 93｜`U+E7F1`｜2FF9

A9 94｜`U+E7F2`｜2FFA

A9 95｜`U+E7F3`｜2FFB

FE 50｜`U+E815`｜2E81

FE 51｜`U+E816`｜GB18030-2022-1｜`U+E816`

FE 52｜`U+E817`｜GB18030-2022-2｜`U+E817`

FE 53｜`U+E818`｜200CCGB18030-2022-3｜`U+E818`

FE 54｜`U+E819`｜2E84

FE 55｜`U+E81A`

FE 56｜`U+E81B`

FE 57｜`U+E81C`｜2E88

FE 58｜`U+E81D`｜2E8B

FE 59｜`U+E81E`｜9FB4

FE 5A｜`U+E81F`｜359E

FE 5B｜`U+E820`｜361A

FE 5C｜`U+E821`｜360E

FE 5D｜`U+E822`｜2E8C

FE 5E｜`U+E823`｜2E97

FE 5F｜`U+E824`｜396E

FE 60｜`U+E825`

FE 61｜`U+E826`｜9FB5

FE 62｜`U+E827`｜39CF

FE 63｜`U+E828`｜39DF

FE 64｜`U+E829`｜3A73

FE 65｜`U+E82A`｜39D0

FE 66｜`U+E82B`｜9FB6

FE 67｜`U+E82C`｜9FB7

FE 68｜`U+E82D`｜3B4E

FE 69｜`U+E82E`｜3C6E

FE 6A｜`U+E82F`｜3CE0

FE 6B｜`U+E830`｜2EA7

FE 6C｜`U+E831`｜215D7GB18030-2022-4｜`U+E831`

FE 6D｜`U+E832`｜9FB8

FE 6E｜`U+E833`｜2EAA

FE 6F｜`U+E834`

FE 70｜`U+E835`｜415F

FE 71｜`U+E836`｜2EAE

FE 72｜`U+E837`

FE 73｜`U+E838`｜2EB3

FE 74｜`U+E839`｜2EB6

FE 75｜`U+E83A`｜2EB7

FE 76｜`U+E83B`｜2298FGB18030-2022-5｜`U+E83B`

FE 77｜`U+E83C`｜43B1

FE 78｜`U+E83D`｜43AC

FE 79｜`U+E83E`｜2EBB

FE 7A｜`U+E83F`｜43DD

FE 7B｜`U+E840`｜44D6

FE 7C｜`U+E841`

FE 7D｜`U+E842`｜464C

FE 7E｜`U+E843`｜9FB9

FE 80｜`U+E844`

FE 81｜`U+E845`

FE 82｜`U+E846`｜477C

FE 83｜`U+E847`｜478D

FE 84｜`U+E848`｜2ECA

FE 85｜`U+E849`

FE 86｜`U+E84A`｜497A

FE 87｜`U+E84B`｜497D

FE 88｜`U+E84C`

FE 89｜`U+E84D`

FE 8A｜`U+E84E`

FE 8B｜`U+E84F`

FE 8C｜`U+E850`｜499F

FE 8D｜`U+E851`｜499B

FE 8E｜`U+E852`｜49B7

FE 8F｜`U+E853`｜49B6

FE 90｜`U+E854`｜9FBA

FE 91｜`U+E855`｜241FEGB18030-2022-6｜`U+E855`

FE 92｜`U+E856`｜4CA3

FE 93｜`U+E857`｜4C9F

FE 94｜`U+E858`｜4CA0

FE 95｜`U+E859`｜4CA1

FE 96｜`U+E85A`｜4C77

FE 97｜`U+E85B`｜4CA2

FE 98｜`U+E85C`｜4D13

FE 99｜`U+E85D`｜4D14

FE 9A｜`U+E85E`｜4D15

FE 9B｜`U+E85F`｜4D16

FE 9C｜`U+E860`｜4D17

FE 9D｜`U+E861`｜4D18

FE 9E｜`U+E862`｜4D19

FE 9F｜`U+E863`｜4DAE

FE A0｜`U+E864`｜9FBB

备注 :a.GB18030-PUA-blue蓝色代表私用区码位 :b.GB18030-2022-1GB 18030-2022将映射至`0x95329031` :c.GB18030-2022-2GB 18030-2022将映射至`0x95329033` :d.GB18030-2022-3GB 18030-2022将200CC映射至`0x95329730` :e.GB18030-2022-4GB 18030-2022将215D7映射至`0x9536B937` :f.GB18030-2022-5GB 18030-2022将2298F映射至`0x9630BA35` :g.GB18030-2022-6GB 18030-2022将241FE映射至`0x9635B630`

## 字节结构

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

GB 18030｜码位数｜Unicode

字节1（最高位）｜字节2｜字节3｜字节4

00 – 7F｜128｜– 007F

80｜错误

81 – FE｜40 – FE 除去 7F｜23940｜– FFFF 除去 D800 – DFFF

81 – 84｜30 – 39｜81 – FE｜30 – 39｜39420

85｜— (12600)｜（未来字符拓展）

86 – 8F｜— (126000)｜（未来汉字拓展）

无｜D800 – DFFF

90 – E3｜30 – 39｜81 – FE｜30 – 39｜1048576｜`1 0000` – `10 FFFF`

E4 – FC｜— (315000)｜（未来标准拓展）

FD – FE｜— (25200)｜（用户造字区域）

FF｜错误

总计｜1112064

一、二字节区段基本就是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也都对大块连续的区域使用了类似的策略。

## 外部链接

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

## 基本资料

- mime：GB18030
- 别名：代码页 54936
- 标准：GB 18030-2022, GB 18030-2005, GB 18030-2000
- 语言：国际，但以中文为主
- 变换/编码：ISO 10646（Unicode）
- 拓展自：EUC-CN, GBK
- 前用：GBK, GB2312
- 分类：Unicode转换格式、扩展ASCII、变长编码、CJK