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