GB 2312

GB/T 2312[註 1]GB/T 2312–80GB/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不能处理,因此后来GBKGB 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)。

對「不規範簡化字」和繁體字的收錄

  • 收了兩個不合乎中華人民共和國標準的簡化字
    • (68–41):由「」類推簡化而來,但《簡化字總表》已將「」簡化歸併為「」。舊版《新華字典》收有此字,釋為「汁」;新版取消,併入「」。
    • (79–64):由「」類推簡化而來,但《簡化字總表》已將「」簡化歸併為「」。
  • 收了三個繁體字
    • (79–81):原版收入使用繁體偏旁之「」字,但《簡化字總表》已將「」和「」簡化歸併為「」;後續的字模附錄將之修正為「」[註 2]
    • (65–65):该繁体字已经在《简化字总表》简化歸併成「」(26–83)字,而且没有说明在语义不清时用「」来表示,可是GB/T 2312却多收此字。
    • (84–80):原版收入使用繁體偏旁之「」字,但《簡化字總表》规范「」字应当简化为「」;对应的简化字「」是由日本的简化汉字「」提交上 Unicode。2013年《通用規範漢字表》收錄「」(2013:7748)。

修訂

GB 5007.1–85《信息交换用汉字 24x24 点阵字模集》首次附錄對 GB/T 2312 之更正,包括:

  • 調整拉丁字母g」之字形
  • 補充六個拼音符號 [註 3]
  • 「」更正為「」
  • 於第10區補充94個半字圖形字符(第3區之半形版本,相當於 GB 1988–80
  • 於第11區加入第8區首32個拼音符號(包括以上補充六個)之半形版本。

GB/T 2312 本身一直未有修訂,但此等修訂部份收入相關字模集(下詳)、GB/T 12345、後續之 GBKGB 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年 (2015-Missing required parameter 1=month!),微软.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《图形信息交换用矢量汉字黑体字模集及数据集》

注釋

  1. 自2017年3月23日起,根据2017年第7号公告和强制性标准整合精简结论,该标准转化成推荐性标准,不再强制执行,由「GB 2312–80」改称为「GB/T 2312」。中国国家标准全文公开系统 http://openstd.samr.gov.cn/bzgk/gb/newGbInfo?hcno=5664A728BD9D523DE3B99BC37AC7A2CC. [2020-03-30]. 缺少或|title=为空 (帮助)
  2. 1965年《印刷通用漢字字形表》將「」(使用簡化偏旁)注明為「作为人名地名及引用文言文的时候仍有需要」;2013年《通用規範漢字表》收錄「」(2013:7679),可用於姓名
  3. ɑ(U+0251)
    ḿ(U+1E3F;Unicode 3.0 始開始收納,故 CP936 亦未收
    ń(U+0144)
    ň(U+0148)
    ǹ(U+01F9;Unicode 3.0 始開始收納,故 CP936 亦未收
    ɡ(U+0261)

参考文献

  1. . [2 October 2016].
  2. Haible, Bruno. . [29 September 2016]. (原始内容存档于2016-10-20).
  3. . 9 August 2001 [29 September 2016]. (原始内容存档于2015-08-01).
  4. . [29 September 2016].
  5. . GNU Savannah. [29 September 2016].
  6. . Python Bug Tracker. [2015-04-24]. (原始内容存档于2016-03-04).
  7. . W3C. [29 September 2016]. (原始内容存档于2017-03-18).

外部链接

参见

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.