汉字编码的国家技术标准不合理汉字编码的国家技术标准不合理
-关于汉字之十三
21世纪是信息时代信息已成为社会发展的重要战略资源社
会的信息化已成为当今世界发展的潮流和核心。汉字信息交换码是中文信息处理的基石。
现行的汉字信息交换码的国家技术标准是GB 18030-2000,从理
论上讲它是不合理的从应用上讲它是不完备的 因此它只能是临时性的国家标准而不应该成为永久性的国家标准。
笔者关于汉字编码的看法散落在以前的多篇博客文章中 网友们
看起来颇不方便经补充整理形成本文对主要观点做一系统介绍。
一
上世纪七十年代微型电子计算机开始普及它的一大功能是可
以进行文字处理。计算机内部实际运行的是由"0"和"1"构成的字
节流一种文字只有设计了该种文字的代码(信息交换码)才能被计算机处理。
美国人发明了电子计算机并根据英文的特点设计了ANS I码
(American Nationnal Standards Institute美国国家标准化学会) 另一种说法是ASCII字符(American Standard Code for InformationInterchange美国信息交换标准码) 。该编码只使用1个字节具体说它们仅占用了一个字节的"前半区"(0到127) 。例如字母"a"的
码值是"97"阿拉伯数字"8"的码值是"56"。
世界上有上百种文字各国人根据国情给自己的文字设计的
信息交换码都选择尽可能短的码(字节数少) 。这些文字编码
单独使用时倒也问题不大但在一个文件中同时出现多种文字就
会"乱套"可能有一"码"多"字"也可能会有一"字"多"码"
因而造成"乱码"编码的混乱使得信息无法正确表达。
针对上述问题 国际标准化组织推出了Unicode码(Universal Multiple-Octet Coded Character Set简记UCS) 有人称之为"统
一码"。该编码对原来各国的文字编码一概"视而不见"。它准
备囊括世界上的所有文字并给每一个"字"(或字母)重新统
一分配一个独有的"码"做到了"字"与"码"的一一对应。
如此一来 即使各种文字都出现在一个文件中也会秩序井然。
Unicode码规定用二字节表示一个字或字母 即UCS-2
理论上二字节的编码空间是65536个。用二字节表示不了的字或
字母用四字节表示 即UCS-4理论上四字节的编码空间是
4294967296个足以包容世界上的全部文字。
从促进世界各国间信息交流的角度看 Unicode码确有推出
的必要它建立了"国际秩序"给各种文字间的交流提供了一
个公共平台。
Unicode码要顾及全世界的所有文字还要考虑各种文字之
间的"平等"编码效率自然要降低用户使用效率低的编码要
蒙受经济损失。这就决定了在某些特定场合Unicode码有独特
优势有其市场空间但在很多时候它又"不受欢迎"。
ANSI码和Unicode码是目前在世界上占统治地位的两大编码
系统。
世界上不少国家的文字编码采取的是与ANS I码兼容的方
案我国的汉字编码也是如此。既然与ANS I码兼容就首先要
保证英文字母的编码及功能不受任何影响在此前提下再考虑汉
字如何编码 因而汉字编码也就处于了"寄人篱下"的状态。
我国的汉字信息交换码的国家标准先有GB2312-80后
发展为GB 18030-2000后者与前者兼容。 GB 18030包括汉字
27000多其中 2字节编码汉字(一个汉字的码长是2个字节)21000多 4字节编码汉字(一个汉字的码长是4个字节)6000多。因"受制于人"这些汉字编码的分布是"见缝插针"式的无规律可言 4字节编码尤其复杂。
经过多年应用暴露出GB 18030有三个方面的的缺陷。
缺陷之一 18030码与信息论信源编码的基本原则相背离汉字的编码效率难以"充分发挥"。
18030码中汉字的编码效率与ANS I码中的英文的编码效率相比较不算低这是由汉字的先天条件决定的请参见"陶沙的博客"中的文章"汉字比英文效率更高-关于汉字之三"。
信息论中信源编码的基本原则是使用概率高的字符用短码使用概率低的字符用长码这样总的平均码长才能最短。该原则被理论和实践证明是正确的。
我们的汉字文章中偶尔会出现英文字母也就是说英文字母对于中国人而言是使用概率较低的字符。我们的文章中使用概率高的字符是"的、一、是、在、不、 了、有、和、人、这"等汉字和逗号" "、句号"。 "等标点符号。这些使用概率高的字符在GB 18030中都是2字节编码(长码) 而使用概率较低的英文字母是1字节编码(短码) 显然与信源编码的基本原则是"背道而驰"的。可以说从原理上讲 18030码就是不合理的。因而 GB 18030只能是"临时性"的国家标准而不应该成为"永久性"的国家标准。
问题的起因是中国汉字编码要"强行"与ANS I码兼容。这样做的理由笔者推测 中国汉字总数有90000多 1个字节最多只能给256个字符编码 2个字节也只能给65536个字符编码假设不与ANS I码兼容 即便只考虑给"常用汉字"(3000多个)编码 1个汉
字也需要2个字节。换言之 当初没有找到比"1个汉字用2个字节"更高效率的编码方法汉字编码与ANS I码兼容或者不兼容效果差不多。既然如此还是兼容好多赚得一些"方便"。限于我国当时的科技发展水平这样做也是可以被理解的。
换一个角度考虑正是因为18030码的不合理汉字编码才有进一步提高编码效率的可能。
缺陷之二 18030码所包括的汉字数不够多一些在日常生活中使用的汉字未被包括在内计算机无法对其进行处理屡屡出现令人尴尬的局面影响了中文信息处理事业的发展。
《齐鲁晚报》报道 山东荷泽高庄村有200多人的姓氏较特殊是"且"字上加个"彡"字(音shǎn) 。办第二代居民身份证时 因计算机打不出这个字按政府部门要求该姓村民无奈只得改姓。有学者考证该姓已有两千年以上的历史。改姓给村民们带来诸多的不便和烦恼他们困惑 "我们不希望老祖宗给我们的姓氏在这一辈失传"、"电脑这玩意你说到底是添方便还是添麻烦?"
村民们不懂计算机他们被迫改姓的技术原因就是国家技术标准GB 18030包括的汉字数不够多没有包括他们的姓。多年来 由此而引发的"削足适履"的事件屡屡发生。公民的姓名随随便便就给改了是对人的尊严的蔑视也是对中国历史文化的一种破坏。不能掌控祖先留下来的汉字用行政命令的办法来"解决"编码技术落后的问题对中国人来说不是件什么光彩的事而可能成为外国人的笑柄。缺陷之三 18030码不能成为中文信息处理的公共平台。
"中文"包括汉字和中国各少数民族的文字 "中文信息处理"
是指对汉字和各少数民族文字的处理 GB18030只包括汉字不包括各少数民族的文字 因而它不能成为中文信息处理的公共平台阻碍了中文信息处理事业的发展。
二
一种新的汉字信息交换码被研制出其简称"郭码"。 中国汉字总量有90000多个常用汉字有3000多个郭码就是针对这些特点"量身定制"地设计出来的。
ANSI码和Unicode码的"计量单位"是字节 ANSI码只用
1个字节 Unicode码用2个或4个字节。 由于1个字节是二进制的8位故称ANSI码是"8模式"、 Unicode码是"16、 32模式"依此类推 18030码是"8、 16、 32模式"。
在以字节为"计量单位"的限制下想提高数以万计的汉字
的编码效率很难很难。
郭码的"计量单位"是"组元" 1个组元的"长度"是1.5
个字节 即二进制的12位。 1个组元可以表示的数是从0到40952个组元可以表示的数是从0到。
郭码使用两个组元对文字进行编码采取区码、位码的形式第一个组元表示区号第二个组元表示位号。如果按最大可能考虑可取4096个区每个区取4096个位那么最大编码空间是
个太庞大了 即使全世界的主要文字都编码也远远用不了。郭码共取96个"区"每个区内取4000个"位"总的编码空间是384000个(96×4000) 。
"区号"按递减顺序为"4095 4094…4001 4000" "位号"
按递增顺序为"0 1 2…3998 3999"。一般情况一个编码字符的区号和位号就组成了它的信息交换码。编码长度是2个组元 即3个字节。
郭码计划用25个区(4095至4071) 10万个空间放全部的中国汉字用10个区(4070至4061) 4万个空间放我国少数民族文字用12个区(4060至4049) 4.8万个空间放外国文字余下49个区
(19.6万个空间)作为"备用区"。外国文字是指Unicode码(UCS-
2)中所包括的、 中国汉字以外的文字。
郭码选定4095区为唯一的"特区"将GB 18030中"一级汉字"
(常用汉字)的3755个汉字和英文字母、阿拉伯数字、逗号、句号、控制符等使用概率较高的字符都放在该区中。利用"缺省表达方式"在生成文件时 4095区字符的编码省掉区号只用位号。也就是说实际上4095区的汉字和字符的码长是1个组元 即1.5个字节。其它区的汉字和字符的码长是2个组元 即3个字节。所以说郭码是"12、24模式"。
由于郭码的"区号"与"位号"处于不同的值段所以4095区
的字符与其它区的字符是容易区分的。面对郭码的"组元流"可做如下判断若该组元的值小于4000则其为"位号" "区号"是4095若该组元的值大于或等于4000则其为"区号"下一个组元必是"位号"二者组成了非4095区的"区位码"。
以上判断方式和18030码判断英文字母与汉字的方式类似只不过后者面对的是"字节流" "分界线值"是128。
除了对单个汉字的编码以外利用备用区的空间资源郭码还可以做"短语编码"。这项功能是ANSI、 Unicode、 GB18030都没有的。
三
郭码与18030码相比较在编码效率、包容汉字总数、可作为各民族文字的公共平台方面性能都更优越。
优势一编码效率高。
尽管郭码4095区的汉字只有3700多个数量仅占中国汉字总量的约4%但统计资料显示 4095区的汉字使用概率在99%以上其它各区汉字使用概率总和也不超过1%。根据信源编码理论汉字的平均编码长度约为
12×0.99+24×0.01=12. 12(位)
18030码中二字节汉字使用概率很高 四字节汉字的使用概率很低影响基本可以忽略故汉字的平均编码长度约为16位。比较上述数据可以看出郭码比18030码汉字的码长要短也就是编码效率要高约提高了32。换言之如果一篇文章由纯汉字组成(不含阿拉伯数字和拉丁字母) 对其编码郭码所用的字节数约为18030码所用字节数的76前者比后者节省了约24的字节。郭码的编码设计符合信源编码的基本原则使用概率高的用短码
(1.5个字节) 使用概率低的用长码(3个字节) 。所以说从原理上讲郭码就是合理的这就是郭码比18030码汉字编码效率高的根本原因。
郭码与18030码相比也有劣势的一面阿拉伯数字、拉丁字母、控制符在18030码中的码长是8位它们在郭码中的码长是12位。在现代汉文中阿拉伯数字和拉丁字母是时常出现的使得郭码对于18030码在编码效率上的优势受到削弱。
仔细算账文章中出现一个4095区的汉字或标点符号郭码比18030码节省4位。 出现一个非4095区汉字会有几种可能如果它是18030码中的二字节汉字郭码比前者多支出8位如果是18030码中的四字节汉字郭码比前者节省8位如果是18030码中没有的汉字那就没法比了。
出现一个阿拉伯数字、拉丁字母或控制符郭码要比18030码多支出4位。
总而言之郭码与18030码谁更占优要由文章的"元素构成"来决定汉字所占比例越大郭码的优势越明显反之则优势减弱。当汉字数与拉丁字母、阿拉伯数字数相当时郭码与18030码"势均力敌"。特殊情况在英语教科书或英汉词典中拉丁字母的数量
可能超过汉字数量而占大多数那时 18030码的编码效率就会优于郭码。
现代汉文中出现阿拉伯数字、拉丁字母使得郭码的平均码长发生了变化若想比较准确计算它的平均长度需要统计出阿拉伯数字、拉丁字母在汉文中的使用概率这是个很困难的事情。阿拉伯数字、拉丁字母在不同的历史时期、不同领域使用概率差别悬殊在司马迁时代它们的使用概率是零在中国历史、文学等学科使用概率较低在数学、信息科学领域使用概率较高如Sin、 3G等。
郭码考虑到它们的影响粗略估算总体上郭码比18030码的编码效率提高了约25(而不是前面的32) 。如果对一篇文章编码郭码所用的字节数约为18030码字节数的80前者比后者节省了约
20的字节。
从许多实验结果看 "估值"与"结果"还是比较接近的。
举一例温家宝总理于2008年3月5日在人大上作的《政
府工作报告》 全文(纯文本文件)用18030码编码的字节数是49952个用郭码编码的字节数是38364个后者是前者的0.7680倍 比前者节省了11588个字节。 《政府工作报告》全文中使用汉字20000多个非4095区的汉字只有4个"崛、渎、诿、崛"。此外如果再考虑到郭码特有的"短语编码"的功能郭码的编码效率还可以在前面的基础上"更上一层楼"。
在"汉字键盘输入码"中对"短语"进行编码并不鲜见在"信息交换码"中对"短语"进行编码则是郭码的创新。郭码的"数据结构"产生了数以十万计的富裕空间(备用区) 充分利用这些资源可以设置大批量的"短语编码"。
"短语编码"就是对一段"短语"象对一个汉字一样地进行编码不管短语内包括几个汉字一个短语编码的码长都是3个字节(类似
于非4095区汉字) 。
"中华人民共和国全国人民代表大会常务委员会"的18030码的编码长度是40(20×2)个字节。郭码中假设以4048区为短语编码区设"中华人民共和国"的短语编码为"4048 1"设"全国人民代表大会"的短语编码为"4048 2"设"常务委员会"的短语编码为"4048 3"。那末"中华人民共和国全国人民代表大会常务委员会"编码的"组元流"就是"4048 1 4048 2 4048 3"组元流的长度由"单字编码"的30(20×1.5)个字节降为"短语编码"的9个字节编码效率有了进一步提高。
详情请参考"陶沙的博客"文章"一种能给中国人省钱的汉字
编码"、 "郭码的工作原理"和"中华各民族文字的公共平台"。
编码效率提高一个汉字文件在存储时可以节省空间在传
输时可以节省时间。这在民用和军用上都有重要意义。
优势二郭码可以包括全部的中国汉字。
世界上有多个国家使用(或使用过)汉字 "中国汉字"是指中
国人使用的汉字 日本、韩国、越南等国独有的、而中国人不使用的汉字在此不予考虑。
"全部的中国汉字"是指用于"信息交换"的全部中国汉字
而不包括"书法"意义上的汉字书法是艺术艺术是讲究创新的而创新是没有止境的。
现在无纸化办公(网络办公、 电子政务) 、无纸化出版(电子书、网上报纸)等发展迅速它们比"有纸化"在办事效率、资源消耗、能源消耗、环境污染等方面具有明显优势是社会发展的必然趋势。但是在中国无纸化若想畅通无阻地发展一个必要条件是凡是在纸上能够印出的中国汉字必须在计算机上也能够显示出来现国家技术标准GB 18030远远不能满足这个要求。
licloud官方消息:当前对香港机房的接近100台物理机(香港服务器)进行打折处理,30Mbps带宽,低至不到40美元/月,速度快,性价比高,跑绝大多数项目都是绰绰有余了。该款香港服务器自带启动、关闭、一键重装功能,正常工作日内30~60分钟交货(不包括非工作日)。 官方网站:https://licloud.io 特价香港物理服务器 CPU:e3-1230v2(4核心、8线程、3.3GH...
spinservers是Majestic Hosting Solutions,LLC旗下站点,主营美国独立服务器租用和Hybrid Dedicated等,spinservers这次提供的大硬盘、大内存服务器很多人很喜欢。TheServerStore自1994年以来,它是一家成熟的企业 IT 设备供应商,专门从事二手服务器和工作站业务,在德克萨斯州拥有40,000 平方英尺的仓库,库存中始终有数千台...
最近很多网站都遭受到了伪墙/假墙攻击,导致网站流量大跌,间歇性打不开网站。这是一种新型的攻击方式,攻击者利用GWF规则漏洞,使用国内服务器绑定host的方式来触发GWF的自动过滤机制,造成GWF暂时性屏蔽你的网站和服务器IP(大概15分钟左右),使你的网站在国内无法打开,如果攻击请求不断,那么你的网站就会是一个一直无法正常访问的状态。常规解决办法:1,快速备案后使用国内服务器,2,使用国内免备案服...