汉字编码方案介绍

当我们使用Windows记事本的“另存为”,可以在GBK、Unicode、Unicode big endian和UTF­‐8 这几种编码方式间相互转换。同样是txt 文件,Windows 是怎样识别编码方式的呢?同样一份txt文件,Unicode、Unicode big endian和UTF­‐8 编码的txt文件的大小都不一样,二进制文件开头会多出几个字节,分别是FF、FE(Unicode),FE、FF(Unicode big endian),EF、BB、BF(UTF­‐8)。但这些标记是基于什么标准呢?

本文主要介绍一下目前常用的汉字编码方案,从而使读者看完后能对于汉字编码有基本的认识。

GB2312 字符集

GB2312是1980年国家制定的汉字内码规范。GB是国标的汉语拼音首字母。该字符集收录了收入汉字6763 个,符号715 个,总计7478 个字符,通常所说的一、二级汉字库就全部包含在GB2312 中。楷体­‐GB2312、仿宋­‐GB2312、华文行楷等市面上绝大多数字体支持显示这个字符集,亦是大多数输入法所采用的字符集。

GB2312 将收录的汉字分成两级:第一级是常用汉字计3755 个,置于16-55区,按汉语拼音字母/笔形顺序排列;第二级汉字是次常用汉字计3008 个,置于56-87 区,按部首/笔画顺序排列。故而GB2312 最多能表示6763 个汉字。

虽然GB2312 包含了绝大部分的常用简体汉字,但是由于中文的复杂性,所以GB2312 目前已经越来越不能适应需要了,特别是因为人名、地名中包含的很多字GB2312 中都没有,如‘镕’字,GB2312 中就没有包含,这样导致很多混乱。

Big5 字符集

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 个。

GBK 字符集

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 简繁体汉字。

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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值