《信息交換用漢字編碼字符集 基本集》(GB/T 2312[註 1],曾用代碼GB/T 2312–80或GB/T 2312–1980)是中華人民共和國國家標準的簡體中文字符集,通常簡稱GB(「國標」漢語拼音首字母),又稱GB0,由中國國家標準總局於1980年發布,1981年5月1日實施。GB/T 2312編碼通行於中國;新加坡等地也採用此編碼。中國幾乎所有的中文系統和國際化的軟件都支持GB/T 2312。
概述
GB/T 2312標準共收錄6763個漢字,其中一級漢字3755個,二級漢字3008個;同時收錄了包括拉丁字母、希臘字母、日文平假名及片假名字母、俄語西里爾字母在內的682個字符。
GB/T 2312的出現,基本滿足了漢字的計算機處理需要,它所收錄的漢字已經覆蓋中國99.75%的使用頻率。但對於人名、古漢語等方面出現的罕用字和繁體字,GB/T 2312不能處理,因此後來GBK及GB 18030漢字字符集相繼出現以解決這些問題。
分區表示
GB/T 2312中對所收漢字進行了「分區」處理,每區含有94個漢字/符號,共計94個區。用所在的區和位來表示字符(實際上就是碼位),因此稱為區位碼(或許叫「區位號」更為恰當)。表示方式也稱為區位碼。例如「萬」字在45區82位,所以「萬」字的區位碼是:45 82(注意,GB類漢字編碼為雙字節編碼,因此,45相當於高位字節,82相當於低位字節)。
- 01~09區(682個):特殊符號、數字、英文字符、制表符等,包括拉丁字母、希臘字母、日文平假名及片假名字母、俄語西里爾字母等在內的682個全角字符;
- 10~15區:空區,留待擴展;在附錄3,第10區推薦作為 GB 1988–80 中的94個圖形字符區域(即第3區字符之半形版本)。
- 16~55區(3755個):常用漢字(也稱一級漢字),按拼音排序;
- 56~87區(3008個):非常用漢字(也稱二級漢字),按部首/筆畫排序;
- 88~94區:空區,留待擴展。
國標碼(交換碼)
為了避開ASCII字符中的CR0不可顯示字符(十六進制為0 ~ 1F,十進制為0 ~ 31)及空格字符0010 0000(十六進制為20,十進制為32),國標碼(又稱為交換碼)規定表示漢字雙字節編碼範圍為十六進制為(21,21) ~ (7E,7E),十進制為(33,33) ~ (126,126) 。因此,須將「區碼」和「位碼」分別加上32(十六進制為20H),作為國標碼。以避免與ASCII字符中0~32的不可顯示字符和空格字符相衝突。
例如: 「萬」字的國標碼十進制為:(45+32,82+32) = (77,114),十六進制為:(4D,72H)。
內碼(機內碼)
國標碼和通用的ASCII碼衝突。把國標碼中的每個字節的最高位都從0換成1,即相當於每個字節都再加上128(十六進制為80,即80H;二進制為1000 0000),從而得到國標碼的「機內碼」表示,簡稱「內碼」。
字節結構
在使用GB/T 2312的程序通常採用EUC儲存方法,以便兼容於ASCII。這種格式稱為EUC-CN。瀏覽器編碼表上的「GB2312」就是指這種表示法。
每個漢字及符號以兩個字節來表示。第一個字節稱為「高位字節」,第二個字節稱為「低位字節」。
「高位字節」使用了0xA1–0xF7(把01–87區的區號加上0xA0),「低位字節」使用了0xA1–0xFE(把01–94加上0xA0)。 由於一級漢字從16區起始,漢字區的「高位字節」的範圍是0xB0–0xF7,「低位字節」的範圍是0xA1–0xFE,佔用的碼位是72*94=6768。其中有5個空位是D7FA–D7FE。
例如「啊」字在大多數程序中,會以兩個字節,0xB0(第一個字節)0xA1(第二個字節)儲存。(與區位碼對比:0xB0=0xA0+16,0xA1=0xA0+1)。
對「不規範簡化字」和繁體字的收錄
- 收了兩個不合乎中華人民共和國標準的簡化字:
- 收了三個繁體字:
修訂
GB 5007.1–85《信息交換用漢字 24x24 點陣字模集》首次附錄對 GB/T 2312 之更正,包括:
- 調整拉丁字母「g」的字形
- 補充六個拼音符號 ɑ ḿ ń ň ǹ ɡ,用於漢語拼音#書寫與排印[注 2]
- 「鍾」更正為「锺」
- 於第10區補充94個半字圖形字符(第3區之半形版本,相當於 GB 1988–80)
- 於第11區加入第8區首32個拼音符號(包括以上補充六個)之半形版本。
GB/T 2312 本身一直未有修訂,但此等修訂部份收入相關字模集(下詳)、GB/T 12345、後續之 GBK 及 GB 18030。
GB/T 2312 亦用於 ISO-IR-165。
兩種不同的GB/T 2312實現
有兩種不同的GB/T 2312實現,在它們之間存在少量的差別,其中至少有一個是錯誤的。
字節序 | GBK子集 | GB2312.TXT | 字符名稱[1] | ||
---|---|---|---|---|---|
A1A4 | U+00B7 · MIDDLE DOT | U+30FB ・ KATAKANA MIDDLE DOT | 間隔點 | ||
A1AA | U+2014 — EM DASH | U+2015 ― HORIZONTAL BAR | 破折號 |
GBK子集與GBK/GB 18030兼容,GB2312.TXT則不兼容。後者基於ftp.unicode.org曾經提供的GB2312.TXT實現,[2]於2011年由官方棄用,[3]2016年9月時已無原文件蹤跡。此外還有很多種廠商實現。[2]
截至2015年[update],微軟.NET使用的是「GBK子集」實現。ICU[4]、libiconv-1.14、[5]php-5.6、ActivePerl-5.20、Java 1.7、Python 3.4[6]都使用「GB2312.TXT」實現。Ruby 2.2兼容兩者編碼,但內部使用「GBK子集」實現。W3C的編碼技術指南規定,應將gb2312
字節流視為GBK編碼,與GB18030一併使用同一解碼器解碼。[7]
字模集
- GB 5007.1–85《信息交換用漢字 24x24 點陣字模集》
- GB 5007.2–85《信息交換用漢字 24x24 點陣字模數據集》
- GB 5199.1–85《信息交換用漢字 15x16 點陣字模集》
- GB 5199.2–85《信息交換用漢字 15x16 點陣字模數據集》
- GB 6345.1–86《信息交換用漢字 32x32 點陣字模集》
- GB 6345.2–86《信息交換用漢字 32x32 點陣字模數據集》
- GB 12034–89《信息交換用漢字 32x32 點陣仿宋體字模集及數據集》
- GB 12035–89《信息交換用漢字 32x32 點陣楷體字模集及數據集》
- GB 12036–89《信息交換用漢字 32x32 點陣黑體字模集及數據集》
- GB 12037–89《信息交換用漢字 36x36 點陣宋體字模集及數據集》
- GB 12038–89《信息交換用漢字 36x36 點陣仿宋體字模集及數據集》
- GB 12039–89《信息交換用漢字 36x36 點陣楷體字模集及數據集》
- GB 12040–89《信息交換用漢字 36x36 點陣黑體字模集及數據集》
- GB 12041–89《信息交換用漢字 48x48 點陣宋體字模集及數據集》
- GB 12042–89《信息交換用漢字 48x48 點陣仿宋體字模集及數據集》
- GB 12043–89《信息交換用漢字 48x48 點陣楷體字模集及數據集》
- GB 12044–89《信息交換用漢字 48x48 點陣黑體字模集及數據集》
- GB/T 13443–92《信息交換用漢字 128x128 點陣楷體字模集及數據集》
- GB/T 13444–92《信息交換用漢字 128x128 點陣仿宋體字模集及數據集》
- GB/T 13445–92《信息交換用漢字 256x256 點陣楷體字模集及數據集》
- GB/T 13446–92《信息交換用漢字 256x256 點陣仿宋體字模集及數據集》
- GB/T 13844–92《圖形信息交換用矢量漢字單線宋體字模集及數據集》
- GB/T 13845–92《圖形信息交換用矢量漢字宋體字模集及數據集》
- GB/T 13846–92《圖形信息交換用矢量漢字仿宋體字模集及數據集》
- GB/T 13847–92《圖形信息交換用矢量漢字楷體字模集及數據集》
- GB/T 13848–92《圖形信息交換用矢量漢字黑體字模集及數據集》
注釋
- ↑ 自2017年3月23日起,根據2017年第7號公告和強制性標準整合精簡結論,該標準轉化成推薦性標準,不再強制執行,由「GB 2312–80」改稱為「GB/T 2312」。參見:GB/T 2312-1980. 中國國家標準全文公開系統. [2020-03-30].
參考文獻
- ↑ GB 2312-1980: Information technology—Chinese ideogram coded character set for information interchange (basic set).
- ↑ 2.0 2.1 Haible, Bruno. GB2312 (Conversion Tables). [29 September 2016].
- ↑ Readme - MAPPINGS/OBSOLETE/EASTASIA. 9 August 2001 [29 September 2016].
- ↑ java-EUC_CN-1.3_P.ucm. [29 September 2016].[永久失效連結]
- ↑ libiconv:lib/gb2312.h. GNU Savannah. [29 September 2016].
- ↑ Issue 24036. Python Bug Tracker. [2015-04-24].
- ↑ Encoding § Names and labels. W3C. [29 September 2016].
外部連結
參見
- 同一時期的其他漢字編碼:大五碼(Big5)、CNS 11643、CCCII、香港增補字符集(HKSCS)、JIS X 0208
- Unicode、通用字符集(ISO/IEC 10646)
- 中日韓統一表意文字
- GB/T 12345