漢字內碼擴展規範
此條目沒有列出任何參考或來源。 (2019年1月19日) |
MIME / IANA | GBK |
---|---|
別名 | CP936, MS936, windows-936, csGBK |
語言 | 國際,但以簡體中文為主,瀏覽器多以GB 18030解碼 |
標準 | GBK 1.0 |
現狀 | 非正式國標編碼,已被GB 18030取代 |
分類 | 擴展ASCII、[a]變長編碼、CJK |
拓展自 | EUC-CN |
前用 | GB2312 |
後續 | GB 18030 |
漢字內碼擴展規範,簡稱GBK,全名為《漢字內碼擴展規範(GBK)》1.0版,由中華人民共和國全國信息技術標準化技術委員會1995年12月1日制訂,國家技術監督局標準化司和電子工業部科技與質量監督司1995年12月15日聯合以《技術標函[1995]229號》文件的形式公佈。 GBK共收錄21886個漢字和圖形符號,其中漢字(包括部首和構件)21003個,圖形符號883個。
GBK為「國家標準擴展」的漢語拼音(Guójiā Biāozhǔn Kuòzhǎn)中的「國」「標」「擴」第一個聲母。英文全稱Chinese Internal Code Extension Specification。
GBK 只為「技術規範指導性文件」,不屬於國家標準。國家質量技術監督局於2000年3月17日推出了GB 18030-2000標準,以取代GBK。GB 18030-2000除保留全部GBK編碼漢字,在第二字節把能使用範圍再度進行擴展,增加了大約一百個漢字及四字節編碼空間,但是將GBK作為子集全部保留。
歷史
[編輯]1993年,Unicode 1.1版本推出,收錄中國大陸、台灣、日本及韓國通用字符集的漢字,總共有20,902個。中國大陸訂定了等同於Unicode 1.1版本的「GB 13000.1-93」「信息技術通用多八位編碼字符集(UCS)第一部分:體系結構與基本多文種平面」。
由於GB 2312-80只收錄6763個漢字,有不少漢字,如部分在GB 2312-80推出以後才簡化的漢字(如「啰」),部分人名用字(如中國前總理朱鎔基的「镕」字),台灣及香港使用的繁體字,日語及韓語漢字等,並未有收錄在內。於是廠商微軟利用GB 2312-80未使用的編碼空間,收錄GB 13000.1-93全部字符制定了GBK編碼。
根據微軟資料,GBK是對GB2312-80的擴展,也就是CP936字碼表(Code Page 936)的擴展(之前CP936和GB 2312-80一模一樣),最早實現於Windows 95簡體中文版。雖然GBK收錄GB 13000.1-93的全部字符,但GBK是一種編碼方式並向下兼容GB2312;而GB 13000.1-93等同於Unicode 1.1是一種字符集,它的幾種編碼方式如UTF8、UTF16LE等,與GBK完全不兼容。
編碼方式
[編輯]字符有一字節和雙字節編碼,00
–7F
範圍內是第一個字節,和ASCII保持一致,此範圍內嚴格上說有96個文字和32個控制符號。
之後的雙字節中,前一字節是雙字節的第一位。總體上說第一字節的範圍是81
–FE
(也就是不含80
和FF
),第二字節的一部分領域在40
–7E
,其他領域在80
–FE
。
具體來說,定義的是下列字節:
範圍 | 第1位元組 | 第2位元組 | 編碼數 | 字數 |
---|---|---|---|---|
水準GBK/1 | A1 –A9 |
A1 –FE |
846 | 717 |
水準GBK/2 | B0 –F7 |
A1 –FE |
6,768 | 6,763 |
水準GBK/3 | 81 –A0 |
40 –FE (7F 除外) |
6,080 | 6,080 |
水準GBK/4 | AA –FE |
40 –A0 (7F 除外) |
8,160 | 8,160 |
水準GBK/5 | A8 –A9 |
40 –A0 (7F 除外) |
192 | 166 |
用戶定義 | AA –AF |
A1 –FE |
564 | |
用戶定義 | F8 –FE |
A1 –FE |
658 | |
用戶定義 | A1 –A7 |
40 –A0 (7F 除外) |
672 | |
合計: | 23,940 | 21,886 |
雙字節符號可以表達的64K空間如下圖所示。綠色和黃色區域是GBK的編碼,紅色是用戶定義區域。沒有顏色區域是不正確的代碼組合。
與其他編碼的關係
[編輯]GBK向下完全兼容GB2312-80編碼。支持GB2312-80編碼不支持的部分中文姓,中文繁體,日文假名,還包括希臘字母以及俄語字母等字母。不過這種編碼不支持韓國字,也是其在實際使用中與unicode編碼相比欠缺的部分。
上述GBK/1和GBK/2的領域即GB 2312-80用通常方法編碼的區域。GB 2312(正確說法是其根據EUC-CN的編碼)和ISO/IEC 2022中調用GR其他的94²字符集一樣,A1
–FE
的範圍開始讀取字節對。這是上圖中右下角的部分。但是,GB 2312中對於AA
–AF
和F8
–FE
區域是空的,沒有賦予編碼。於是GBK就在這些領域裏進行拓展。二者剩餘部分作為用戶定義區。
更重要的是,GBK進行了字節範圍的擴展。ISO/IEC 2022中GR區域的字數有94²=8,836字的限制。只要放棄ISO/IEC 2022中針對圖形文字和控制文字賦予嚴格的範圍的模式,下位字節為單字節文字,上位字節對保留對應字符的功能,潛在的128²=16,384的代碼位置就可以使用。GBK採用其中的一部分,第一個字節從A1
–FE
(每個字節有94個選項)擴展成81
–FE
(126個選項),第二字節的範圍是40
–FE
(191個選項),總共有24066(126*191)個位置。
與CP936字碼表比較
[編輯]微軟在稍新一點的CP936中使用單字節 0x80 代表歐元字符(U+20AC),而《規範》之GBK編碼不含此字符。
輸入方法
[編輯]參見
[編輯]註釋
[編輯]- ^ 嚴格來說不是,因為ASCII字節會出現在GBK拓展二字節部分的後半字
參考文獻
[編輯]外部連結
[編輯]- ICU:UNICODE (頁面存檔備份,存於互聯網檔案館)
- -GBK table (頁面存檔備份,存於互聯網檔案館)
- 微軟CP936編碼表 (頁面存檔備份,存於互聯網檔案館)
- GBK編碼表 (頁面存檔備份,存於互聯網檔案館)