热门问题
时间线
聊天
视角

GB 18030

為中文書寫系統設計的字符編碼 来自维基百科,自由的百科全书

GB 18030
Remove ads

GB 18030(全称《信息技术 中文编码字符集》)是中华人民共和国国家标准简体中文字符集,由中华人民共和国信息产业部提出、信息产业部电子工业标准化研究所归口。其向后兼容并替代GB 2312-1980GBKCP936传统编码,并支持UnicodeGB 13000)的所有码位。GB 18030采用变长多字节编码,每个字可以由1个、2个或4个字节组成。其编码空间庞大,最多可定义161万个字符。由于GB 18030完全支持Unicode,无需动用造字区即可支持中日韩统一表意文字、中国国内的少数民族文字以及emoji等字符。GB 18030在微软Windows系统中的代码页54936

事实速览 MIME / IANA, 别名 ...

除编码方法外,GB 18030还包含其他文字和语言以及本标准适用对象的要求。不过,GB 18030不是一个汉字规范,不定义汉字的正式字形;字形由《通用规范汉字表》进行规范。

Remove ads

版本

本标准的第一版 GB 18030-2000《信息技术 信息交换用汉字编码字符集 基本集的扩充》中华人民共和国信息产业部电子工业标准化研究所、北京大学计算机技术研究所、北大方正集团、北京方正新天地信息网络科技有限责任公司、四通集团公司中国科学院软件研究所、长城软件公司、四通利方公司、中国软件与技术服务股份有限公司、金山软件公司联想集团起草,由国家质量技术监督局于2000年3月17日发布和实施。此版本兼容Unicode 3.0的中日韩统一表意文字扩展区A,共收录27,533个汉字。

本标准的第二版 GB 18030-2005《信息技术 中文编码字符集》国家质量监督检验检疫总局中国国家标准化管理委员会于2005年11月8日发布,并于2006年5月1日实施。此版本兼容Unicode 3.1的中日韩统一表意文字扩展区B,并刊载少数民族包括朝鲜文蒙古文(包括满文托忒文锡伯文阿礼嘎礼文)、德宏傣文藏文维吾尔文哈萨克文柯尔克兹文彝文的文字。共有70,244个汉字。此标准内的单字节编码部分、双字节编码部分,和四字节编码部分收录的少数中日韩统一表意文字扩展区A的汉字,为强制性标准。其他部分则属于规模性标准。在中华人民共和国境内所有软件产品,都需要支持这个同时包含单字节、双字节和四字节编码的规格。[1]:4

本标准的第三版 GB 18030-2022《信息技术 中文编码字符集》国家市场监督管理总局和中国国家标准化管理委员会于2022年7月19日发布,并于2023年8月1日实施[2]。此版本兼容到Unicode 11为止的中日韩统一表意文字扩展区CDEF,并新增康熙部首,以及滇东北苗文傈僳文西双版纳新傣文西双版纳老傣文德宏傣文等少数民族文字以及蒙古文 BIRGA 符号,共收录汉字87,887个和汉字部首228个,比上一版增加录入了1.7万余个生僻汉字。此版本在保留总体结构的基础上,从条文强制改为全文强制,但增加了“实现的级别”一章,定义了三个实现级别:

  • 级别1:支持中日韩统一表意文字和中日韩统一表意文字扩展区A的汉字(所有具备中文信息处理和交换功能的产品均应满足此级别。与上一版的“部分强制”相比,实际要求“增加四字节编码部分的CJK统一汉字”的 66 字。)
  • 级别2:在级别1的基础上额外支持资料性附录E中明确的《通用规范汉字表》中没有包含在级别1之内的 8105 个汉字(操作系统数据库管理系统中间件系统软件和支撑软件均应满足此级别。)
  • 级别3:支持GB 18030-2022中所规定的全部汉字以及康熙部首(GB/T 4754《国民经济行业分类》中任何用于政务服务和公共服务的信息技术产品和信息系统应均满足此级别。)
Remove ads

Unicode支持

更多信息 GB 字节串, Unicode 码位 ...

GB 18030在其标准中以码表形式定义了除去代理对外的全部Unicode码位的定义。由于GB 18030基本上是绕开已分配的码点去指定需要对应的Unicode,其变换和UTF-8相比要复杂得多。在日常实现上,常常会直接使用一个偏移量表[3]

GB 18030-2005与GB 18030-2000、GBK相比,去除了很多原来映射在PUA中的编码;后来剩余的24个PUA码位也在Unicode 4.1中加上。

在GB 18030-2022中,剩余的24个PUA码位已经被去除或更改对应,所有有意义字符都已经映射到正式的 Unicode 码位上。[4]

更多信息 GB 字节串, Unicode 码位 [a] ...
Remove ads

字节结构

GB 18030包含三种长度的编码:单字节的ASCII、双字节的GBK(略带扩展)、以及用于填补所有Unicode码位的四字节UTF区块。GBK双字节部分通过查表定义,而四字节部分则根据之前两个部分没有提到的通用字符集码位顺序填补。由于和GBK兼容,GB 18030在搜索ASCII字符时也需要使用特别代码进行判断。

更多信息 GB 18030, 码位数 ...

一、二字节区块基本就是GBK编码,另外加上了专门的欧元字符、竖排版本的标点符号,以及造字区对Unicode造字区的对应。四字节区块可以视作两段形似GBK二字节区块结构的部分,每段的第一字节可以为0x81到0xFE,第二字节为0x30到0x39。由于结构类似,能够安全于GBK的字符串搜索程序对于GB 18030来说也基本安全(正如基于字节英语byte-oriented的搜索程序对于EUCUTF-8也基本安全一般。)

四字节区块总共可以表达1,587,600(126×10×126×10)种字符,足以覆盖Unicode的1,112,064(17×65536 − 2048个代理对)个有效码位。

由于四字节区块通过填空定义,要写出处理这段转换的程序需要同时知道GBK的覆盖范围,并不简单:

U+00DE (Þ) → 81 30 89 37
U+00DF (ß) → 81 30 89 38
U+00E0 (à) → A8 A4
U+00E1 (á) → A8 A2
U+00E2 (â) → 81 30 89 39
U+00E3 (ã) → 81 30 8A 30

WHATWGW3C的GB 18030实现通过一张“位置偏移表”记录GB 18030四字节区中连续的几块碎片,以便高效处理转换。[11]ICU[9]和glibc也都对大块连续的区域使用了类似的策略。

参见

注释

Loading content...

参考资料

外部链接

Loading content...
Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads