一、概述
我國國家強制性標準GB 2312-1980《信息交換用漢字編碼字符集·基本集》(Chinese Ideograms Coded Characters Set for Information Interchange-Basic Set),是1981年我國開始實施的第一個漢字編碼國家標準。該編碼字符集根據(jù)GB 2311《信息處理交換用七位編碼字符集的擴充方法》(等效采用(EQV)ISO/IEC 2022)提供的擴充技術,通過對GB 1988《信息處理交換用的七位編碼字符集》(等效采用(EQV)ISO 646)所規(guī)定C0控制集和G0圖形字符集進行替換和擴充,形成雙字節(jié)編碼的新的編碼字符集。根據(jù)國家標準化委員會2017年第7號公告和強制性標準整合精簡結論,自2017年3月23日起,該標準轉(zhuǎn)化為推薦性標準,不再強制執(zhí)行。GB/T 2312-1980規(guī)定了漢字信息交換用的基本圖形字符及其二進制編碼表示,它適用于一般漢字的處理、漢字通信等系統(tǒng)之間的信息交換。
需要指出的是:同樣是在1980年我國等效采用(EQV)了ISO 646發(fā)布了GB 1988《信息處理交換用的七位編碼字符集》,該標準雖稱字符集,但它僅規(guī)定了不包括漢字的128個圖形字符(包括控制字符和圖形字符(如漢語拼音、外文字母、阿拉伯數(shù)字、標點符號等等)的編碼,所以它采用了其七位編碼就夠了。然而,如果將包括漢字在內(nèi)的字符進行編碼,七位編碼肯定是不合適的。因此,為了與其兼容,我國在1980年又專門發(fā)布了GB 2311《信息處理交換用七位編碼字符集的擴充方法》。該標準規(guī)定了七位編碼的多種擴充技術,為字符集編碼所提供的八位代碼和七位代碼的結構,結構中使用的代碼元素在八位代碼和七位代碼是通用的。之所以使用八位編碼是為了適應數(shù)量更多字符集(如大量的漢字)的編碼,即可采用多字節(jié)編碼。此時,我國發(fā)布的第一個信息交換用漢字編碼字符集標準GB 2312-1980《信息交換用漢字編碼字符集·基本集》,就是基于GB 2311提供的擴充方法,采用雙字節(jié)的編碼。
欲更多了解上述字符編碼與擴充方法的請進入:GB 1988;GB 2311
另外,GB/T 2312-1980之所以稱為漢字編碼字符集的基本集,是因為它僅規(guī)定了最為常用的、使用頻度高的6763個漢字,當初的規(guī)劃是其它漢字的編碼將用“輔助集”的標準來發(fā)布。為此我國曾發(fā)布了多個漢字編碼字符集輔助集的標準。
欲詳細了解我國漢字編碼字符集輔助集標準情況的請進入。
二、關于漢字編碼字符集基本集
1、編碼方法
GB/T 2312中對任何一個圖形字符都采用雙字節(jié)編碼表示,每個字節(jié)均采用GB/T 1988及GB/T 2311中的七位編碼表示。兩個字節(jié)中前面的字節(jié)為第一字節(jié),后面的為第二字節(jié)。GB/T 2312字符集構成一個二維平面,它分成94行,94列,行號稱為區(qū)號,從1~94編號,由第一字節(jié)標識;列號稱為位號,也是從1~94編號,由第二字節(jié)標識。每一個漢字或符號在碼表中都有各自的位置,字符的位置用它所在的區(qū)號(行號)及位號(列號)來表示。如下圖2-1所示。
圖 2-1:GB 2312-1980字符集的組成
2、圖形字符
該基本集收錄了一般符號、序號、數(shù)字、拉丁字母、日文假名、希臘字母、俄文字母、漢語拼音符號、漢語注音字母、漢字等,共7445個圖形符號。GB/T 2312字符集由3部分組成。第一部分是字母、數(shù)字和各種符號,包括拉丁字母、俄文、日文平假名與片假名、希臘字母、漢語拼音等共682個(統(tǒng)稱為GB 2312圖形符號);第二部分為一級常用漢字,共3755個,按漢語拼音排列,置于16~55區(qū);第三部分為二級常用字,共3008個,因相對不太常用,所以按偏旁部首排列,置于56~87區(qū)。漢字總數(shù)為6763個。具體內(nèi)容統(tǒng)計詳見下表2-2。
表 2-2:GB 2312國標字符集圖形符號的種類與數(shù)量
在GB/T 2312中,同時給出了所編碼的圖形符號代碼表以及圖形符號的排列。若要具體了解GB/T 2312-1980標準詳細內(nèi)容請查閱下附件2。
附件1:GB 2312-1980《信息交換用漢字編碼字符集·基本集》
三、關于漢字編碼的區(qū)位碼、交換碼和機內(nèi)碼(簡稱“內(nèi)碼”)
另外,在計算機內(nèi)部,為了處理與存儲的方便,每個漢字的區(qū)號和位號分別用單字節(jié)來表示,例如“大”字的區(qū)號是20,位號是83,它的區(qū)位碼是20-83,用雙字節(jié)表示為:
00010100 01010011
區(qū)位碼不能用于漢字的通信。為了避免與ISO 2022中用于通信的控制碼(00H~1FH)發(fā)生沖突,每個漢字的區(qū)號和位號必須分別加上32(即二進制0010 0000)。經(jīng)過這樣處理得到的代碼稱為漢字的“交換碼”。因此,“大”字的交換碼是:00110100 01110011。
由于文本中的漢字與西文字符經(jīng)常混合在一起使用,漢字信息如不予以特別的標識,它與單字節(jié)的標準ASCII碼就會混淆不清。為了解決這個問題,采用的方法之一就是把一個漢字看成兩個擴展ASCII碼,使表示GB 2312漢字的兩個字節(jié)的最高位都等于“1”。這種高位為“1”的雙字節(jié)(16位)漢字編碼就稱為GB 2312漢字的“機內(nèi)碼”,又稱為內(nèi)碼。目前,這種表示方式已經(jīng)成為GB 23122漢字內(nèi)碼的一種事實上的標準。上面所說的“大”字的內(nèi)碼是:10110100 11110011(B4F3)。
不難看出,GB 2312漢字內(nèi)碼在雙字節(jié)代碼空間中,其碼位分布于右下角的1/4象限,如下圖3所示。
圖 3:GB 2312漢字內(nèi)碼在雙字節(jié)代碼空間中的碼位分布
欲詳細了解計算機漢字編碼內(nèi)碼介紹的請進入。
溫馨提示:GB/T 2312的基本集漢字僅有6763個,遠不能滿足我們?nèi)粘J褂玫男枰m然還有其各輔助集。于是,就曾經(jīng)有了漢字內(nèi)碼擴展規(guī)范(GBK),對其進行了大大的擴充。關鍵是,GB/T 2312無法與ISO規(guī)定的國際文字編碼方式不很兼容,于是又有了國家標準GB 18030《信息技術 中文編碼字符集》,該標準才是目前國內(nèi)施行的漢字編碼字符集最佳選擇。