GB2312 是漢字字符集和編碼的代號,中文全稱為“信息交換用漢字編碼字符集”,由中華人民共和國國家標(biāo)準(zhǔn)總局發(fā)布,一九八一年五月一日實施。GB 是“國標(biāo)” 二字的漢語拼音縮寫。
GB2312 字符集 (character set) 只收錄簡化字漢字,以及一般常用字母和符號,主要通行于中國大陸地區(qū)和新加坡等地。GB2312 共收錄有 7445 個字符,其中簡化漢字 6763 個,字母和符號 682 個。
GB2312 將所收錄的字符分為 94 個區(qū),編號為 01 區(qū)至 94 區(qū);每個區(qū)收錄94 個字符,編號為 01 位至 94 位。GB2312 的每一個字符都由與其唯一對應(yīng)的區(qū)號和位號所確定。例如:漢字“啊”,編號為 16 區(qū) 01 位。
區(qū)號 字?jǐn)?shù) 字符類別01 94 一般符號02 72 順序號碼03 94 拉丁字母04 83 日文假名05 86 Katakana06 48 希臘字母07 66 俄文字母08 63 漢語拼音符號09 76 圖形符號10-15 備用區(qū)16-55 3755 一級漢字,以拼音為序56-87 3008 二級漢字,以筆劃為序88-94 備用區(qū)
GB2312 原始編碼 (encoding) 是對所收錄的每個字符都用兩個字節(jié) (byte) 表示。第一字節(jié)為“高字節(jié)”,由字符的區(qū)號值加上 32 而形成;第二字節(jié)為“低字節(jié)”,由字符的位號值加上 32 而形成。例如:漢字“啊”,編號為 16 區(qū) 01 位。它的高字節(jié)為 16 + 32 = 48 (0x30),低字節(jié)為 01 + 32 = 33 (0x21),合并而成的編碼為 0x3021。
在區(qū)位號值上加 32 的原因大慨是為了避開低值字節(jié)區(qū)間。
由于 GB2312 原始編碼與 ASCII 編碼的字節(jié)有重疊,現(xiàn)在通行的 GB2312 編碼是在原始編碼的兩個字節(jié)上各加 128 修改而形成。例如:漢字“啊”,編號為16 區(qū) 01 位。它的原始編碼為 0x3021,通行編碼為 0xB0A1。
如果不另加說明,GB2312 常指這種修改過的編碼。
應(yīng)該說GB2312的每一個漢字由兩個字節(jié)構(gòu)成,其中每一個字節(jié)的范圍都在0xA1~0xFE,正好每一個字節(jié)都有94個編碼范圍,與區(qū)位碼個數(shù)完全對應(yīng)。
EUC-CN可以理解為GB2312的別名,和GB2312完全相同。
區(qū)位碼更應(yīng)該認(rèn)為是字符集的定義,定義了所收錄的字符和字符位置,而GB2312及EUC-CN是實際計算機環(huán)境中支持這種字符集的編碼。HZ和ISO-2022-CN是對應(yīng)區(qū)位碼字符集的另外兩種編碼,都是用7位編碼空間來支持漢字。區(qū)位碼和GB2312編碼的關(guān)系有點像 Unicode和UTF-8。