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[a]變長編碼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+E7C7 U+1E3F ḿ
81 35 F4 37 U+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-2005 Unicode 4.1 GB 18030-2022[3]
A6 D9[5]:108 U+E78D U+FE10
A6 DA U+E78E U+FE12
A6 DB U+E78F U+FE11
A6 DC U+E790 U+FE13
A6 DD U+E791 U+FE14
A6 DE U+E792 U+FE15
A6 DF U+E793 U+FE16
A6 EC U+E794 U+FE17
A6 ED U+E795 U+FE18
A6 F3 U+E796 U+FE19
A8 BC U+E7C7 U+1E3F ḿ
A8 BF U+E7C8 U+01F9 ǹ
A9 89 U+E7E7 U+303E
A9 8A U+E7E8 U+2FF0
A9 8B U+E7E9 U+2FF1
A9 8C U+E7EA U+2FF2
A9 8D U+E7EB U+2FF3
A9 8E U+E7EC U+2FF4
A9 8F U+E7ED U+2FF5
A9 90 U+E7EE U+2FF6
A9 91 U+E7EF U+2FF7
A9 92 U+E7F0 U+2FF8
A9 93 U+E7F1 U+2FF9
A9 94[5]:173 U+E7F2 U+2FFA
A9 95 U+E7F3 U+2FFB
FE 50 U+E815 U+2E81
FE 51 U+E816 U+20087 𠂇 [b] U+E816
FE 52 U+E817 U+20089 𠂉 [c] U+E817
FE 53 U+E818 U+200CC 𠃌 [d] U+E818
FE 54 U+E819 U+2E84
FE 55 U+E81A U+3473
FE 56 U+E81B U+3447
FE 57 U+E81C U+2E88
FE 58 U+E81D U+2E8B
FE 59 U+E81E U+9FB4
FE 5A U+E81F U+359E
FE 5B U+E820 U+361A
FE 5C U+E821 U+360E
FE 5D U+E822 U+2E8C
FE 5E U+E823 U+2E97
FE 5F U+E824 U+396E
FE 60 U+E825 U+3918
FE 61 U+E826 U+9FB5
FE 62 U+E827 U+39CF
FE 63 U+E828 U+39DF
FE 64 U+E829 U+3A73
FE 65 U+E82A U+39D0
FE 66 U+E82B U+9FB6
FE 67 U+E82C U+9FB7
FE 68 U+E82D U+3B4E
FE 69 U+E82E U+3C6E
FE 6A U+E82F U+3CE0
FE 6B U+E830 U+2EA7
FE 6C U+E831 U+215D7 𡗗 [e] U+E831
FE 6D U+E832 U+9FB8
FE 6E U+E833 U+2EAA
FE 6F U+E834 U+4056
FE 70 U+E835 U+415F
FE 71 U+E836 U+2EAE
FE 72 U+E837 U+4337
FE 73 U+E838 U+2EB3
FE 74 U+E839 U+2EB6
FE 75 U+E83A U+2EB7
FE 76 U+E83B U+2298F 𢦏 [f] U+E83B
FE 77 U+E83C U+43B1
FE 78 U+E83D U+43AC
FE 79 U+E83E U+2EBB
FE 7A U+E83F U+43DD
FE 7B U+E840 U+44D6
FE 7C U+E841 U+4661
FE 7D U+E842 U+464C
FE 7E U+E843 U+9FB9
FE 80 U+E844 U+4723
FE 81 U+E845 U+4729
FE 82 U+E846 U+477C
FE 83 U+E847 U+478D
FE 84 U+E848 U+2ECA
FE 85 U+E849 U+4947
FE 86 U+E84A U+497A
FE 87 U+E84B U+497D
FE 88 U+E84C U+4982
FE 89 U+E84D U+4983
FE 8A U+E84E U+4985
FE 8B U+E84F U+4986
FE 8C U+E850 U+499F
FE 8D U+E851 U+499B
FE 8E U+E852 U+49B7
FE 8F U+E853 U+49B6
FE 90 U+E854 U+9FBA
FE 91 U+E855 U+241FE 𤇾 [g] U+E855
FE 92 U+E856 U+4CA3
FE 93 U+E857 U+4C9F
FE 94 U+E858 U+4CA0
FE 95 U+E859 U+4CA1
FE 96 U+E85A U+4C77
FE 97 U+E85B U+4CA2
FE 98 U+E85C U+4D13
FE 99 U+E85D U+4D14
FE 9A U+E85E U+4D15
FE 9B U+E85F U+4D16
FE 9C U+E860 U+4D17
FE 9D U+E861 U+4D18
FE 9E U+E862 U+4D19
FE 9F U+E863 U+4DAE
FE A0 U+E864 U+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[b]
位元組1(最高位) 位元組2 位元組3 位元組4
007F 128 0000007F
80 錯誤[c]
81FE 40FE 除去 7F[d] 23940 0080FFFF 除去 D800DFFF[e]
8184 3039 81FE 3039 39420
85 — (12600) (未來字元拓展)
868F — (126000) (未來漢字拓展)
D800DFFF[f]
90E3 3039 81FE 3039 1048576 1 000010 FFFF
E4FC — (315000) (未來標準拓展)
FDFE — (25200) (使用者造字區域)
FF 錯誤
總計 1112064

一、二位元組區段基本就是GBK編碼,另外加上了專門的歐元字元、豎排版本的標點符號,以及造字區對Unicode造字區的對應。四位元組區段可以視作兩段形似GBK二位元組區段結構的部分,每段的第一位元組可以為0x81到0xFE,第二位元組為0x30到0x39。由於結構類似,能夠安全於GBK的字串搜尋程式對於GB 18030來說也基本安全(正如基於位元組英語byte-oriented的搜尋程式對於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. ^ 這些為代理對字元英語surrogate code point,在UTF-16之外沒有實際意義。

參考資料 編輯

  1. ^ CESI. GB18030 符合性问与答 [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. ^ Encoding Standard # gb18030-index. WHATWG. [2016-09-11]. (原始內容存檔於2015-02-04). 
  3. ^ 3.0 3.1 Lunde, Dr Ken. The GB 18030-2022 Standard. Medium. 4 August 2022 [7 August 2022]. (原始內容存檔於2022-08-07) (英語). 
  4. ^ Group:GBK外字. GlyphWiki. [11 September 2016]. (原始內容存檔於2019-02-16). 
  5. ^ 5.0 5.1 Lunde, Ken. CJKV Information Processing. O'Reilly Media, Inc. December 2008 [11 September 2016]. ISBN 978-0-596-51447-1. 
  6. ^ Standardization Administration of China (SAC). GB 18030-2005: Information Technology—Chinese coded character set. 2005-11-18. 
  7. ^ Standardization Administration of China (SAC). GB 18030-2000: Information Technology—Chinese coded character set for information interchange — Extension for the basic set. 2000-03-17. 
  8. ^ 8.0 8.1 Authoritative mapping table between GB18030-2000 and Unicode頁面存檔備份,存於網際網路檔案館). ICU – International Components for Unicode. 2001-02-21. Accessed 2016-09-04.
  9. ^ GB 18030-2000报批稿 (PDF). [2017-08-15]. (原始內容 (PDF)存檔於2017-08-15). 
  10. ^ Encoding Standard # gb18030-index. WHATWG. [2016-09-24]. (原始內容存檔於2015-02-04). 
  11. ^ GB 18030—2022《信息技术 中文编码字符集》发布并出版. 微信公眾平台. 2022-08-12 [2024-01-28]. (原始內容存檔於2024-01-28) (中文). 

外部連結 編輯