浅谈龙榆生先生纪念网站中生僻字的计算机处理

2151阅读 0评论2009-05-24 wmjordan
分类:系统运维

浅谈龙榆生先生纪念网站中生僻字的计算机处理

在制作时,会遇到一些未包含在 GBK 字符集中的生僻字,如“鸟”字部的“[交鸟][青鸟]”等等。使用《打通输入生僻汉字的障碍:BabelMap》一文中介绍的方法,可以录入和显示这些字符。但要将这些字在网页上显示出来,就有一些需要解决的问题。一般的网页使用 GBK 字符集编码,而这些字符在 GBK 字符集中没有对应的计算机字节编码,无法正常显示。
 
一开始,我想用支持七万个汉字的国标 18030 字符集来编码网页文件,这样该字符集包含的汉字比 GBK 要多很多,汉字编码问题就可以解决了。但是,将网页转换成该字符集之后,测试发现 Internet Explorer 无法正常处理(参见:Internet Explorer 不支持国标汉字集 GB18030),一些正常的 GBK 字符会被显示成乱码。只好放弃使用国标 18030。
 
然后,我想到使用 UTF-8(或 UTF-16)来编码网页文件。使用了 UTF-8 编码之后,生僻字是可以完整地显示出来了,也没有乱码的问题。但是,代价就是 UTF-8 编码后,一个汉字要用三个字节来编码,意味着文件的大小比原来一个汉字用两个字节编码的 GBK 要大将近一半。在这个硬盘海量、网络宽带的年代,大一点点也没什么关系。然而测试后,我发现了一个无法容忍的问题:网页文件编译成 CHM 文件后,CHM 全文搜索引擎无法搜索非 GBK 代码页的文件。也就是说,CHM 文件的全文搜索功能没用了。
 
最后,我记起以前一些 GBK 网页显示著作权所有(Copyright)符号的方法——使用字符实体。于是,继续使用 GBK 编码网页文件,然后尝试使用字符实体替换生僻字,看其是否能在 Internet Explorer 中显示出来。测试了一下,完全可行。例如,前面提到的两个汉字转换成字符实体为“䴔䴖”。虽然使用 CHM 的全文检索不一定能搜索到这些使用实体替代了的汉字,但其余大部分内容还是可被检索了。
 
生僻字的编码处理问题就基本被解决了,技术含量也不算很高,就是使用 HTML 的字符实体而已。
 
上一篇:Internet Explorer 不支持国标汉字集 GB18030
下一篇:使用 PDF 补丁丁裁剪 PDF 文件页边的空白