Gb_2312

**GB/T 2312**，**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 不能處理，而是由一系列的國標輔助集負責編碼和顯示（如 GB/T 12345《信息交換用漢字編碼字符集　第一輔助集》、GB/T 7589 《信息交換用漢字編碼字符集 第二輔助集》及 GB/T 7590《信息交換用漢字編碼字符集 第四輔助集》）。後來 GBK 及 GB 18030 漢字字符集相繼出現以解決這些問題。

GB/T 2312 中對所收漢字進行了「分區」處理，每區含有 94 個漢字／符號，共計 94 個區。實際上，GB/T 2312 只使用了 87 區。

用所在的區和位來表示字符（實際上就是碼位）的方法稱為區位碼（或許叫「區位號」更為恰當）。例如「万」字在 45 區 82 位，所以「万」字的區位碼是 45-82（45 是「區碼」，82 是「位碼」）。在儲存進電腦時，電腦會在區位碼上加上特定數字後才保存進內存以確保和其他編碼兼容（如 ASCII）。轉碼後，區位碼的「區碼」會變成「高位字節」，而「位碼」會變成「低位字節」。

下列是 GB/T 2312 分區後在區段內儲存的字符：

* 01~09 區（682 個）：特殊符號、數字、英文字符、制表符等，包括拉丁字母、希臘字母、日文平假名及片假名字母、俄語西里爾字母等在內的 682 個全形字符；
* 10~15 區：空區，留待擴展；在附錄 3，第 10 區推薦作為 GB 1988—80 中的 94 個圖形字符區域（即第 3 區字符之半形版本）。
* 16~55 區（3755 個）：常用漢字（也稱一級漢字），按拼音排序；
* 56~87 區（3008 個）：非常用漢字（也稱二級漢字），按部首 / 筆畫排序；
* 88~94 區：空區，留待擴展。

在 GB 2312 內，每個漢字及符號的碼位使用兩個字節來表示。第一個字節稱為「高位字節」，對應分區的編號（把區位碼的「區碼」加上特定值）；第二個字節稱為「低位字節」，對應區段內的個別碼位（把區位碼的「位碼」加上特定值）。

### ISO 2022-CN（國標碼、交換碼）

為了避開 ASCII 字符中的 CR0 不可顯示字符（十六進位為 `0×00` 至 `0×1F`，十進位為 0 至 31）及空格字符（十六進位為 `0×20`，十進位為 32），國標碼（又稱為交換碼）參考 ISO 2022 規定表示非 ASCII 字符雙字節編碼範圍為十六進位為 `<21 21>`-`<7E 7E>`，十進位為 (33, 33) 至 (126, 126)。因此，在進行碼位轉換時，須將「區碼」和「位碼」分別加上 32（十六進位為 `0×20`）作為國標碼。

在這個編碼模式內，軟體需要使用低端控制字符（C0），高端控制字符（C1）和 US-ASCII 字符集（GL）標註字符屬於單字節（ASCII）還是雙字節，相對容易造成亂碼（如丟失控制 / 轉義字符）。

在 GB/T 2312 內，高位字節使用了 `0x21—0x77`（把 01—87 區的區號加 32 或 `0×20`），低位字節使用了 `0x21—0x7E`（把 01—94 加上 32 或 `0×20`）。

例：「万」字（區位碼 45-82）的 ISO 2022 碼十進位為：(45+32, 82+32) = (77, 114)，十六進位為：**`<4D 72>`**。

### EUC-CN（機內碼、內碼）

因為國標碼和通用的 ASCII 碼衝突，因此後續為了方便辨認單字節和雙字節的編碼，部分廠商在 ISO 2022 的基礎上把雙字節字符的二進位最高位都從 0 換成 1，即相當於把 ISO 2022 的每個字節都再加上 128（十六進位為 `0×80`）得到「機內碼」表示，簡稱「內碼」。把「區碼」和「位碼」分別加上 160（十六進位為 `0×A0`）也可以得到相同的機內碼表示，這種格式也就是 EUC。使用 GB/T 2312 的程序通常採用 EUC 儲存方法，以便兼容於 ASCII。這種格式稱為 **EUC-CN**。瀏覽器編碼表上的「GB2312」就是指這種表示法。

在 GB/T 2312 內，高位字節使用了 `0xA1—0xF7`（把 01—87 區的區號加 160 或 `0×A0`），低位字節使用了 `0xA1—0xFE`（把 01—94 加上 160 或 `0×A0`）。非 ASCII 字符雙字節編碼範圍為十六進位為 `<A1 A1>`-`<FE FE>`，十進位為 (161, 161) 至 (254, 254)。

例：「万」字（區位碼 45-82）的 EUC 碼十進位為：(45+160, 82+160) = (205, 242)，十六進位為：**`<CD F2>`**。

### HZ

HZ 編碼是由李楓峰在 1988 年發明的編碼系統。其目的是在 7 位元組的限制下（如電子郵件）儲存 GB/T 2312 的雙字節字符。其在 ISO 2022 編碼字符的前後分別加上轉義字符 `~{`（`7E 7B`）和 `~}`（`7E 7D`）後，使用正常的 ASCII 轉碼變成 ASCII 字符。部分機器也可以接受使用 EUC-CN 編碼的轉義字符。

例：「万」字（區位碼 45-82）的 ISO 2022 碼十六進位為 `<4D 72>`。加上轉義字符後，字符串變成 `7E 7B **4D 72** 7E 7D`。HZ 的編碼即為 `~{Mr~}`（`M` 的 ASCII 碼是 `0×4D`，`r` 的 ASCII 碼是 `0×72`）。

* 收了兩個不合乎中華人民共和國標準的簡化字：
  * 渖（68—41）：由「审 [審]」類推簡化而來，但《簡化字總表》已將「瀋」簡化歸併為「沈」。舊版《新華字典》收有此字，釋為「汁」；新版取消，併入「沈」。
  * 镟（79—64）：由「钅 [釒]」類推簡化而來，但《簡化字總表》已將「鏇」簡化歸併為「旋」。
* 收了三個繁體字：
  * 鍾（79—81）：原版收入使用繁體偏旁之「鍾」字，但《簡化字總表》已將「鍾」和「鐘」簡化歸併為「钟」；後續的字模附錄將之修正為「锺」。
  * 後（65—65）：該繁體字已經在《簡化字總表》簡化歸併成「后」（26—83）字，而且沒有說明在語義不清時用「後」來表示，可是 GB/T 2312 卻多收此字。
  * 麴（84—80）：原版收入使用繁體偏旁之「麴」字，但《第一批異體字整理表》已將「麴」和「麯」簡化歸併為「曲」。對應的簡化字「麹」是由日本的簡化漢字「麹」提交上 Unicode。2013 年《通用規範漢字表》收錄「麹」以作人名使用（2013:7748）。

GB 5007.1—85《信息交換用漢字 24x24 點陣字模集》首次附錄對 GB/T 2312 之更正，包括：

* 調整拉丁字母「g」的字形
* 補充六個拼音符號 ɑ ḿ ń ň ǹ ɡ，用於漢語拼音
* 「鍾」更正為「锺」
* 於第 10 區補充 94 個半字圖形字符（第 3 區之半形版本，相當於 GB 1988—80）
* 於第 11 區加入第 8 區首 32 個拼音符號（包括以上補充六個）之半形版本。

GB 5007.1—85 曾將「麴」（84—80）更換成「麹」，但是後續修訂（GB 5007.1—2001 和 GB/T 5007.1—2010）和其他字模集仍舊保留 GB/T 2312 的繁體偏旁「麥」之「麴」。

GB/T 2312 本身一直未有修訂，但此等修訂部份收入相關字模集（下詳）、GB/T 12345、後續之 GBK 及 GB 18030。

GB/T 2312 亦用於 ISO-IR-165。

有兩種不同的 GB/T 2312 實現，在它們之間存在少量的差別，其中至少有一個是錯誤的。

GBK 子集與 GBK/GB 18030 兼容，GB2312.TXT 則不兼容。後者基於 ftp.unicode.org 曾經提供的 GB2312.TXT 實現，於 2011 年由官方棄用，2016 年 9 月時已無原文件蹤跡。此外還有很多種廠商實現。

截至 2015 年 (2015-Missing required parameter 1=_month_!)，微軟.NET 使用的是「GBK 子集」實現。ICU、libiconv-1.14、php-5.6、ActivePerl-5.20、Java 1.7、Python 3.4 都使用「GB2312.TXT」實現。Ruby 2.2 兼容兩者編碼，但內部使用「GBK 子集」實現。W3C 的編碼技術指南規定，應將 `gb2312` 字節流視為 GBK 編碼，與 GB18030 一併使用同一解碼器解碼。

* 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《圖形信息交換用矢量漢字黑體字模集及數據集》

* GB2312 80 信息交換用漢字編碼字符集 基本集 - 中華人民共和國教育部政府入口網站（頁面存檔備份，存於網際網路檔案館）
* TransWiki 中文 - GB2312 漢字拼音對照表
* GB2312 簡體中文編碼表（頁面存檔備份，存於網際網路檔案館）
* 信息交換用漢字編碼字符集屬性（官方）
* GB 2312-80 (CJKV Information Processing,Appendix E) "STSong-Light" font designed by Changzhou SinoType Technology （頁面存檔備份，存於網際網路檔案館）
* 図書館員のコンピュータ基礎講座：GB 2312-80 コード表（頁面存檔備份，存於網際網路檔案館）（日語）

* 同一時期的其他漢字編碼：大五碼（Big5）、國家標準中文交換碼（CNS 11643）、CCCII、香港增補字符集（HKSCS）、JIS X 0208
* Unicode、通用字符集（ISO/IEC 10646）
* 中日韓統一表意文字
* GB/T 12345