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