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。
MIME / IANA | GB18030 |
---|---|
別名 | 頁碼 54936 |
語言 | 國際,但以中文為主 |
標準 | GB 18030-2022, GB 18030-2005, GB 18030-2000 |
分類 | Unicode轉換格式、擴充ASCII、[a]變長編碼、CJK |
拓展自 | EUC-CN, GBK |
變換/編碼 | ISO 10646(Unicode) |
前用 | GBK, GB2312 |
除編碼方法外,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的漢字,為強制性標準。其他部分則屬於規模性標準。在中華人民共和國境內所有軟體產品,都需要支援這個同時包含單位元組、雙位元組和四位元組編碼的規格。[1]:4
本標準的第三版 GB 18030-2022《信息技術 中文編碼字符集》由國家市場監督管理總局和中國國家標準化管理委員會於2022年7月19日發布,並於2023年8月1日實施[2]。此版本相容到Unicode 11為止的中日韓統一表意文字擴充區C、D、E和F,並新增康熙部首,以及滇東北苗文、傈僳文、西雙版納新傣文、西雙版納老傣文、德宏傣文等少數民族文字以及蒙古文 BIRGA 符號,共收錄漢字87,887個和漢字部首228個,比上一版增加錄入了1.7萬餘個生僻漢字。此版本在保留總體結構的基礎上,從條文強制改為全文強制,但增加了「實現的級別」一章,定義了三個實現級別:
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相比要複雜得多。在日常實現上,常常會直接使用一個偏移量表[3]。
GB 18030-2005與GB 18030-2000、GBK相比,去除了很多原來對映在PUA中的編碼;後來剩餘的24個PUA碼位也在Unicode 4.1中加上。
在GB 18030-2022中,剩餘的24個PUA碼位已經被去除或更改對應,所有有意義字元都已經對映到正式的 Unicode 碼位上。[4]
GB 位元組串 | Unicode 碼位 [a] | |||
---|---|---|---|---|
GBK 1.0[5] | GB 18030-2005 | Unicode 4.1 | GB 18030-2022[4] | |
A6 D9[6]: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[6]: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 <control-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 <control-2EB3> | ||
FE 74 | U+E839 |
U+2EB6 <control-2EB6> | ||
FE 75 | U+E83A |
U+2EB7 <control-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 龻 | ||
備註 |
位元組結構
編輯GB 18030包含三種長度的編碼:單位元組的ASCII、雙位元組的GBK(略帶擴充)、以及用於填補所有Unicode碼位的四位元組UTF區段。GBK雙位元組部分通過查表定義,而四位元組部分則根據之前兩個部分沒有提到的通用字元集碼位順序填補。由於和GBK相容,GB 18030在搜尋ASCII字元時也需要使用特別代碼進行判斷。
GB 18030 | 碼位數 | Unicode[b] | |||
---|---|---|---|---|---|
位元組1(最高位) | 位元組2 | 位元組3 | 位元組4 | ||
00 – 7F
|
128 | 0000 – 007F
| |||
80
|
— | 錯誤[c] | |||
81 – FE |
40 – FE 除去 7F [d]
|
940 23 | 0080 – FFFF 除去 D800 – DFFF [e]
| ||
81 – 84
|
30 – 39
|
81 – FE
|
30 – 39
|
420 39 | |
85
|
— (600) 12 | (未來字元拓展) | |||
86 – 8F
|
— (000) 126 | (未來漢字拓展) | |||
無 | — | D800 – DFFF [f]
| |||
90 – E3
|
30 – 39
|
81 – FE
|
30 – 39
|
048576 1 | 1 0000 – 10 FFFF
|
E4 – FC
|
— (000) 315 | (未來標準拓展) | |||
FD – FE
|
— (200) 25 | (使用者造字區域) | |||
FF
|
— | 錯誤 | |||
總計 | 112064 1 |
一、二位元組區段基本就是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四位元組區中連續的幾塊碎片,以便高效處理轉換。[11]ICU[9]和glibc也都對大塊連續的區域使用了類似的策略。
參見
編輯注釋
編輯- ^ 嚴格來說不是,因為ASCII位元組會出現在GBK拓展二位元組部分的後半字
- ^ 包含66個「非字元」
- ^ 雖然兩個版本的GB 18030都認為此碼位不正確(指正式發布的,GB 18030-2000的報批稿卻同時有單雙位元組歐元[10]),但是ICU的定義錯誤稱其為有效碼位。出於GBK相容性考慮,WHATWG的GBK/GB 18030二合一解碼器將此位元組視作歐元符號。
- ^ 參見漢字內碼擴充規範條目細分。
- ^ 上一行的碼位使用二位元組GBK編碼,下一行的碼位按照順序以四位元組編碼補全覆蓋面。此段最後一個實際用上的編碼為U+FFFF的
84 31 A4 39
(2005版239頁),不過劃區時畫到了84 39 FE 39
。 - ^ 這些為代理對字元,在UTF-16之外沒有實際意義。
參考資料
編輯- ^ 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.]
- ^ GB 18030—2022《信息技术 中文编码字符集》发布并出版. 微信公眾平台. 2022-08-12 [2024-01-28]. (原始內容存檔於2024-01-28) (中文).
- ^ Encoding Standard # gb18030-index. WHATWG. [2016-09-11]. (原始內容存檔於2015-02-04).
- ^ 4.0 4.1 Lunde, Dr Ken. The GB 18030-2022 Standard. Medium. 4 August 2022 [7 August 2022]. (原始內容存檔於2022-08-07) (英語).
- ^ Group:GBK外字. GlyphWiki. [11 September 2016]. (原始內容存檔於2019-02-16).
- ^ 6.0 6.1 Lunde, Ken. CJKV Information Processing. O'Reilly Media, Inc. December 2008 [11 September 2016]. ISBN 978-0-596-51447-1.
- ^ Standardization Administration of China (SAC). GB 18030-2005: Information Technology—Chinese coded character set. 2005-11-18.
- ^ 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.
- ^ 9.0 9.1 Authoritative mapping table between GB18030-2000 and Unicode (頁面存檔備份,存於網際網路檔案館). ICU – International Components for Unicode. 2001-02-21. Accessed 2016-09-04.
- ^ GB 18030-2000报批稿 (PDF). [2017-08-15]. (原始內容 (PDF)存檔於2017-08-15).
- ^ Encoding Standard # gb18030-index. WHATWG. [2016-09-24]. (原始內容存檔於2015-02-04).
外部連結
編輯- 新浪網:關於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對照表(頁面存檔備份,存於網際網路檔案館)