汉字编码方案演变

在Unicode之前,一共存在过3套中文编码标准:GB2312-80, Big5,HKSCS.

GB2312-80


GB2312-80,是中国大陆使用的国家标准,其中一共编码了6763个常用简体汉字。
GB2312即《信息交换用汉字编码字符集———基本集》,由国家标准总局发布,1981 年 5月 1日实施. 它 对促进汉字信息技术的发展和计算机的应用,发挥了重要作用,有人称它是汉字编码的“秦始皇”.几乎所有的中文系统和国际化的软件都支持GB2312.
GB2312收录图形字符7445个,包括阿拉伯和罗马数字,拉丁字母,日文假名,希腊字母,俄文字母,汉 语拼音符号和注音字母,其中简体汉字 6763 个,以频度的高低、构词能力的强弱、实际用处的大小为原则进行选字,分成两级:

  • 一级汉字3755 个,按拼音排序;
  • 二级汉字3008个,按部首、笔画排序.

一、二级汉字约占近代文献汉字累计使用频度99. 75%以上. GB2312是二字节编码. 它将代码表分为94 个区,区号对应第一字节; 每个区 94 个位,位号对应第二字节. 为了兼容ASCII 码,将区号和位号组成的两个字节的值分别加 0x20( 0x20 以下为控制符) ,再将最高 位分别置 1,以示区别. GB2312 的编码范围为 0xA1A1-0xFEFE.
例: “啊”字是GB2312之中的第一个汉字,排在16区1位,它的编码为 0xB0A1.

Big5


Big5,是中国台湾使用的编码标准,编码了台湾使用的繁体汉字,大概有8千多个。
Big5 中文名“大五码”,是繁体字常用的字符集,共收入13060 个繁体汉字,808 个符号,总计13868 个字符,普遍使用于台湾、香港等地区。台湾教育部标准宋体楷体等港台大多数字体支持这个字符集的显示。
1983 年10 月,台湾国家科学委员会、教育部国语推行委员会、中央标准局、行政院共同制定了《通用汉字标准交换码》,后经修订于1992 年5 月公布,更名为《中文标准交换码》,BIG5 是台湾资讯工业策进会根据以上标准制定的编码方案。虽然Big5 存在一些瑕疵,但广泛应用于电脑行业,尤其是
互联网中,从而成为一种事实上的行业标准。
BIG5 码是双字节编码方案,其中第一个字节的值在OXAO-OXFE 之间,第二个字节在OX40-OX7E 和OXA1-OXFE 之间。BIG5 收录13461 个汉字和符号,包括:

  • 符号408 个,编码位置A140-A3BE
  • 常用字5401 个,编码位置A440-C67E,包括台湾教育部颁布的《常用国字标准字体表》的全部汉字4808 个,台湾教科书常用字587 个,异体字6 个。
  • 次常用字7652 个,编码位置C940-F9D5,包括台湾教育部颁布的《次常用国字标准字体表》的全部汉字6341个,《罕用国字标准字体表》中使用频率较高的字1311 个。

HKSCS


HKSCS,是中国香港使用的编码标准,字体也是繁体,但跟Big5有所不同。
这3套编码标准都采用了两个扩展ASCII的方法,因此,几套编码互不兼容,而且编码区间也各有不同。因为其不兼容性,在同一个系统中同时显示GB和Big5基本上是不可能的。当时的南极星、RichWin等等软件,在自动识别中文编码、自动显示正确编码方面都做了很多努力 。他们用了怎样的技术我就不得而知了,我知道好像南极星曾经以同屏显示繁简中文为卖点。

后来,由于各方面的原因,国际上又制定了针对中文的统一字符集GBK和GB18030,其中:

GBK


GBK已经在Windows、Linux等多种操作系统中实现。GBK兼容GB2312,并增加了大量不常用汉字,还加入了几乎所有的Big5中的繁体汉字。但是GBK中的繁体汉字和Big5中的几乎不兼容。
GB2312-80 仅收汉字6763 个,这大大少于现有汉字,随着时间推移及汉字文化的不断延伸推广,有些原来很少用的字,现在变成了常用字。因此全国信息技术化技术委员会于1995 年12 月1 日《汉字内码扩展规范》。GBK 向下与GB2312完全兼容,包含Big­‐5 的繁体字(但是不兼容Big­‐5 字符集编码)。
GBK 共收入21886 个汉字和图形符号,包括:

  • GB2312 中的全部汉字、非汉字符号。
  • BIG5 中的全部汉字。
  • 与ISO-10646 相应的国家标准GB13000 中的其它CJK 汉字
  • (以上合计20902 个汉字)
  • 其它汉字、部首、符号,共计984 个。

微软公司自Windows95 简体中文版开始支持GBK 代码,但目前的多数搜索引擎都不能很好地支持GBK汉字。宋体、隶书、黑体、幼圆、华文中宋、华文细黑、华文楷体、标楷体(DFKai-­‐SB)、Arial Unicode MS、MingLiU、PMingLiU 等字体支持显示这个字符集。微软拼音输入法2003、全拼、紫光拼音等输入法,能够录入GBK 简繁体汉字。

GB18030相当于是GBK的超集,比GBK包含的字符更多。据我所知目前还没有操作系统直接支持GB18030。

Unicode


很多传统的编码方式都有一个共同的问题,即容许电脑处理双语环境(通常使用拉丁字母以及其本地语言),但却无法同时支持多语言环境。例如ISO8859 所定义的字符虽然在不同的国家中广泛地使用,可是在不同国家间却经常出现不兼容的情况。因此产生了Unicode,它是由国际组织设计,可以容纳全世界所有语言文字的编码方案。Unicode的学名“Universal Multiple‐Octet Coded Character Set”,简称为UCS。UCS 可以看作是”Unicode Character Set”的缩写。历史上存在两个试图独立设计Unicode的组织,即国际标准化组织(ISO)和一个软件制造商的协会(unicode.org)。
ISO 开发了ISO 10646 项目,Unicode 协会开发了Unicode 项目。在1991 年前后,双方都认识到世界不需要两个不兼容的字符集。于是它们开始合并双方的工作成果,并为创立一个单一编码表而协同工作。从Unicode2.0 开始,Unicode 项目采用了与ISO 10646­‐1 相同的字库和字码。目前两个项目仍都存在,并独立地公布各自的标准。Unicode 协会现在的最新版本是2005 年的Unicode 4.1.0。ISO 的最新标准是ISO 10646­‐3:2003。

UTF­‐8、UTF­‐16 等编码方式

UCS只是规定如何编码,并没有规定如何传输、保存这个编码。例如“汉”字的UCS 编码是6C49,我可以用4 个ascii 数字来传输、保存这个编码;也可以用utf­‐8 编码:3 个连续的字节E6 B1 89 来表示它。关键在于通信双方都要认可。UTF­‐8、UTF­‐7、UTF­‐16 都是被广泛接受的方案。UTF­‐8 的一个特别的好处是它与ISO­‐8859­‐1 完全兼容。UTF 是“UCS Transformation Format”的缩写。

简单来说,unicode,gbk 和大五码就是编码的值,而utf­‐8,uft­‐16 之类就是这个值的表现形式.而前面那三种编码是一兼容的,同一个汉字,那三个码值是完全不一样的.如"汉"的uncode 值与gbk 就是不一样的,假设uncode 为a040,gbk 为b030,而uft­‐8 码,就是把那个值表现的形式.utf­‐8 码完全只针对uncode 来组织的,如果GBK 要转UTF-8 必须先转uncode 码,再转utf-­‐8 就可以了.

参考:[1] https://blog.csdn.net/u013894429/article/details/53635264
[2] https://blog.csdn.net/linkedin_21614133/article/details/45309705
[3] 浅说汉字编码. 袁径三

猜你喜欢

转载自blog.csdn.net/sunyueqinghit/article/details/82560371