GB 18030

GB 18030（全称《-{zh:信息技术　中文编码字符集;zh-hans:信息技术　中文编码字符集;zh-hant:信息技術　中文編碼字符集}-》）是中华人民共和国国家标准简体中文字符集，由中华人民共和国信息产业部提出、信息产业部电子工业标准化研究所归口。其向后兼容并替代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《-{zh:信息技术　信息交换用汉字编码字符集　基本集的扩充;zh-hans:信息技术　信息交换用汉字编码字符集　基本集的扩充;zh-hant:信息技術　信息交換用漢字編碼字符集　基本集的擴充}-》由中华人民共和国信息产业部电子工业标准化研究所、北京大学计算机技术研究所、北大方正集团、北京方正新天地信息网络科技有限责任公司、四通集团公司、中国科学院软件研究所、长城软件公司、四通利方公司、中国软件与技术服务股份有限公司、金山软件公司和联想集团起草，由国家质-{}-量技术监督局于2000年3月17日发布和实施。此版本兼容Unicode 3.0的中日韩统一表意文字扩展区A，共收录27,533个汉字。

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

本标准的第三版 GB 18030-2022《-{zh:信息技术　中文编码字符集;zh-hans:信息技术　中文编码字符集;zh-hant:信息技術　中文編碼字符集}-》由国家市场监督管理总局和中国国家标准化管理委员会于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 18030版本中Unicode码位的映射更动 GB 字节串  Unicode 码位 GB 18030-2000 GB 18030-2005 A8 BC (ḿ) 81 35 F4 37

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 码位  GBK 1.0 GB 18030-2005  Unicode 4.1  GB 18030-2022A6 D9U+E78DA6 DAU+E78EA6 DBU+E78FA6 DCU+E790A6 DDU+E791A6 DEU+E792A6 DFU+E793A6 ECU+E794A6 EDU+E795A6 F3U+E796A8 BCU+E7C7A8 BFU+E7C8A9 89U+E7E7A9 8AU+E7E8A9 8BU+E7E9A9 8CU+E7EAA9 8DU+E7EBA9 8EU+E7ECA9 8FU+E7EDA9 90U+E7EEA9 91U+E7EFA9 92U+E7F0A9 93U+E7F1A9 94U+E7F2A9 95U+E7F3FE 50U+E815FE 51U+E816U+E816FE 52U+E817U+E817FE 53U+E818U+E818FE 54U+E819FE 55U+E81AFE 56U+E81BFE 57U+E81CFE 58U+E81DFE 59U+E81EFE 5AU+E81FFE 5BU+E820FE 5CU+E821FE 5DU+E822FE 5EU+E823FE 5FU+E824FE 60U+E825FE 61U+E826FE 62U+E827FE 63U+E828FE 64U+E829FE 65U+E82AFE 66U+E82BFE 67U+E82CFE 68U+E82DFE 69U+E82EFE 6AU+E82FFE 6BU+E830FE 6CU+E831U+E831FE 6DU+E832FE 6EU+E833FE 6FU+E834FE 70U+E835FE 71U+E836FE 72U+E837FE 73U+E838FE 74U+E839FE 75U+E83AFE 76U+E83BU+E83BFE 77U+E83CFE 78U+E83DFE 79U+E83EFE 7AU+E83FFE 7BU+E840FE 7CU+E841FE 7DU+E842FE 7EU+E843FE 80U+E844FE 81U+E845FE 82U+E846FE 83U+E847FE 84U+E848FE 85U+E849FE 86U+E84AFE 87U+E84BFE 88U+E84CFE 89U+E84DFE 8AU+E84EFE 8BU+E84FFE 8CU+E850FE 8DU+E851FE 8EU+E852FE 8FU+E853FE 90U+E854FE 91U+E855U+E855FE 92U+E856FE 93U+E857FE 94U+E858FE 95U+E859FE 96U+E85AFE 97U+E85BFE 98U+E85CFE 99U+E85DFE 9AU+E85EFE 9BU+E85FFE 9CU+E860FE 9DU+E861FE 9EU+E862FE 9FU+E863FE A0U+E864 备注
a.蓝色代表私用区码位
b.GB 18030-2022将映射至0x95329031
c.GB 18030-2022将映射至0x95329033
d.GB 18030-2022将映射至0x95329730
e.GB 18030-2022将映射至0x9536B937
f.GB 18030-2022将映射至0x9630BA35
g.GB 18030-2022将映射至0x9635B630

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

+ GB 18030编码Authoritative mapping table between GB18030-2000 and Unicode . ICU – International Components for Unicode. 2001-02-21. Accessed 2016-09-04. GB 18030 码位数 Unicode 字节1（最高位）  字节2  字节3  字节4  –  128  –   — 错误  –    –  除去    –  除去  –   –    –   –   –    — () （未来字符拓展）  –  — () （未来汉字拓展） 无 —  –   –   –   –   –   1 0000 – 10 FFFF  –  — () （未来标准拓展）  –  — () （用户造字区域）  — 错误 总计 

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

 参见 
国家标准代码
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对照表



Category:中文信息处理
Category:字符集
18030