汉字乱码是一个古老的问题了。自从汉字走进计算机,关于汉字乱码的问题一天也没有消失过。有关汉字和 HTML 的问题,将在本文系列的稍后的文章中单独谈到。本文不准备重复 GB_2312-80(国标)、BIG5、GBK、HZ 的最基本的互相转换的问题,相关的内容可以在本 BBS Chinese 板询问。 这里以其他角度做一些补充。
由于编码位置上的巧合和汉字平均出现概率上的统计,用 GB 环境看 BIG5 编码的文字,将有汉字显示成为日语的假名,这个是在 GB 环境下看到 BIG5 汉字的主要特征。上网时间长一些,就会积累一些经验,使得你能够一眼区分乱码的类型。比如下面的例子就是 BIG5:
¨睹??〃???bluesea?れ?地BBSΘ??? BBSい锣更?腊 ??衡诀厩秆?ㄏノ?ン??い?龟悔拜??セゅ更?れ?地 BBS Internet?阶跋????? telnet://bbs.tsinghua.edu.cn ?WWW?拜? ?? http://bbs.tsinghua.edu.cn ?讽?兵ン场骸ì?锣更セゅ?? ぃ???す??(1) 锣更れ?地 BBS ???(2)ぃэゅ?(3) 锣更度 ??贺 BBS ??坝?┦借?呼?? ???贺Αй脓?????? セゅ┪Ы场ノ?ヴタΑ???セ???ゅ?场だ?
常见的汉字乱码还有 HZ 编码,这是一种屏蔽最高位的汉字表示方法,它是在 GB 和 BIG5 的基础上,用 ~{ 和 ~} 括起汉字编码的部分。比如:
很多海外中文杂志,如著名的《华夏文摘》( http://www.cnd.org )等都仍然采用 HZ 编码方法。HZ 编码用额外的控制序列来控制字形的显示,字母和数字是不被编码的,它们在 ~{ 和 ~} 标记对的外面。这种编码不符合汉字与文本字符的固定映射规律,处理起来相对麻烦。著名的汉字平台──南极星 ( NJWIN 1.6,http://www.njstar.com ) 对 HZ 提供了灵活和强大的支持。
海峡两岸的语言经过长期的发展,实际上已经不能形成一一对应的关系,GB 和 BIG5 的转换也是如此。因此这种转换往往具有不可逆性,倒不是说一段文字不能在 GB 和 BIG5 之间互相转换,而是说一旦你转换错了,信息就不能复原。比如你拿一段本来的是 GB 的文字当作 BIG5, 然后再实施 BIG5 -> GB 的转换,就会损失信息,这时逆变换将不能完全得到原来的文字。比如 SMTH WWW 发文时,本是 GB 的,错选了 BIG5 按钮就会如此,反之也类似。
汉字的另一个问题是所谓的"半个汉字"乱码,由于很多英文编辑软件以字符为单位来处理文本,汉字被删除一半后,剩余的部分会和相邻的汉字重新组合,使得文本面目全非。因此,除了注意在输入、删除的时候注意这种问题外,还要注意不要在英文字处理软件中轻易使用"字符替换"功能,这往往会把一个汉字的后一个字符和相邻汉字的前一个字符当成一个汉字被替换掉。这种乱码最后往往令人莫名其妙、找不到原因。
需要说明的是,简体和繁体这两个概念和 GB、BIG5 并没有逻辑上的联系,GB 的定义是简体字,BIG5 采用的是繁体字,但是为了阅读的方便,在各自的编码中再做一个内部字形或字体的映射,就形成了所谓 GB 繁体或 BIG5 简体之类的概念,他们仅仅是一些汉字软件提供的方便功能,如南极星等。我们常见的 WWW 浏览器 Microsoft Internet Explorer 4.x 和 Netscape Navigator 4.x 都已经内置了比较完善的汉字转换功能。加装了语言包的 IE 4.0 还使得我们脱离汉字平台也可以进行中文处理,并且可以处理大字符集 GBK 。详见 Win95_win3.x 讨论区中 "让Pwin95更顺手"系列之(11)。
在中文平台上,很多人有不同的见解。本文的主旨与此无关,仅仅是综合各个方面的因素,我个人向计算机的初学者建议选择中文 PWindows 95 OSR2 或更高的版本作为最基本的操作环境。中文之星 ( http://www.chinese-star.com 、 http://www.suntendy.com/ ) ,四通利方Richwin( http://www.srsnet.com/ ) 等由于技术和企业行为的不稳定性,不适合作为具有依附性的中文平台。但是这些软件中的局部,如新拼音输入法、支持剪辑板的码转换器等还是具有一定特色 的。如果有对这个问题感兴趣的讨论,请到 Chinese 板搜索以前的标题继续讨论。
在 Chinese Community Information Center (CCIC),集中了一些中文处理的比较完整权威的解决方案,该网点地址是 http://www.ifcss.org/software ,其中包括了各种操作系统、各种汉字编码的处理方案和软件。
除了常见中文平台外,通过 http://www.shareware.com、 http://www.download.com 、http://www.hotfiles.com 等共享软件网点,查询 GB、BIG5、chinese 等关键字可以获得大量的小型应用程序,包括码转换器。尽管如此,本文还要重点推荐一些用于 DOS 的命令行处理工具,具有使用方便、可以进行批处理等特点。他们是:
c2t (将 GB 或 BIG5 转化为拼音)
HZ (gb2hz hz2gb zw2hz) (convert gb to hz, hz to gb, zw to hz respectively)
hc (convert between GB and BIG5)
下载地址为:
http://ftpsearch.ntnu.no/cgi-bin/search?query=c2t.zip
http://ftpsearch.ntnu.no/cgi-bin/search?query=hz-20.zip
http://ftpsearch.ntnu.no/cgi-bin/search?query=hc-30.zip
其他软件请到 http://www.ifcss.org/ftp-pub/software/ 查找。另外,GB 和 BIG5 属于两个不同组织各自制定的标准体系,对应汉字编码的转换都是通过表格来转换的,他们之间不存在任何内在的逻辑关系或函数,试图寻找这种公式的人,请不要白费精力。
几乎所有新生的软件在中国使用都会面临一个汉字兼容的问题,比如新生的 Java 及其开发环境、动态HTML领域等都从未幸免。 通过NT的资源存取能力可以实现英文软件的界面/资源汉化,由于 PWindows 95 对话框的缺省宋体的大小为 9 磅,而英文 Windows 95 的相应值为 MS Sans Serif 8,所以很多英文软件在 PWindows 中运行时,界面中的字残缺不全,这些也可以通过资源的重新编辑予以调整。
但是,软件内核的汉化不是可以轻易实现的。即使是厂家做的汉化工作也有非常粗糙的痕迹。比如 P-IE 4.0 在安装繁体汉字包后,PWindows Help 就产生了内码的混乱。这就是个严重的 Bug。有时只能随意选出一个具体的条目弹出帮助窗口,再反过来调出帮助主题窗口,偶尔还可以对付使用。或者你就再运行一份 NJwin,在 Option 中选择 Standard English/Western 。其实这一招在以前讨论 OutLook Express 看 BIG5 邮件的时候就用过了,也是个乱码的问题,详 见 Win95_win3.x 讨论区精华区中的"让PWin 95更顺手(9)─南极星与OutLook Express"。