UTF8, Wordpress 和 CvtCNKI

By Jiang | 3月 23, 2007

WordPress 是一款开源的非常优秀的博客软件,CvtCNKI 是我开发的一个开源的文献管理辅助工具。除了开源,这两个软件可以说没什么共同之处,直到最近我发现,他们在处理 UTF8 编码的文件的时候,都遇到了一点麻烦。

UTF8 是 Unicode 编码规范中的一种。文字编码是一个非常令程序员头疼的问题。不同的国家有不同的文字,各种文字都有一套或几套编码规范。Unicode 旨在统一全世界不同文字的编码规范,这个过程需要循序渐进,因此其制定了 UTF8,UTF16 等编码格式。在 UTF16 中,每两个字节为一个编码单元,因此需要确定每个编码单元的字节顺序,也就是 Byte Order Mark,简称 BOM 。

UTF16 靠这个小技巧可以轻松确定字节顺序,不过对于 UTF8 而言,它以一个字节为编码单元,也就没有必要确定字节顺序。不过仍然可以用 BOM 来表明编码方式。也就是说,对于 UTF8 编码文件而言,是否带有 BOM 都无所谓。这就带来的其它的一些问题。

如果你使用 Wordpress 时间比较长,你可能汉化或者修改过一些纯英文的 Wordpress 主题。很多英文主题的作者,并没有将主题国际化的打算,也就没有提供专门的翻译词汇表。因此如果打算进行汉化,一般会在原来的主题文件中进行修改。如果你将修改后的主题直接保存上传,你会发现在你的网站中显示出来的全是乱码。

出现乱码的原因在于,Wordpress 默认的编码格式是 UTF8 (可以手动修改),与你的主题文件编码格式 ANSI 或 gb 2312 不一致,所以文字不能正常显示。解决问题的办法在于,你必须将修改过的,包含汉字的主题文件另存为 UTF8 no BOM 格式。之所以强调 no BOM ,是因为 php 程序语言在设计时没有考虑 utf8 bom 的问题,因此他不会去忽略 UTF8 文件开头的 BOM 字符,因此必须选择 UTF8 no BOM 格式。

CvtCNKI 最近也遭遇了一些 UTF8 文件的问题。CvtCNKI 可以转换 UTF8 和 gb2312(gb10830,gbk等) 不同编码格式的文件。不过默认只能处理 UTF8 with BOM 编码格式的文件。目前万方数据库直接导出的题录文件采用的是 UTF8 no BOM 格式,因此目前不能直接转换。暂时的解决办法是,重新创建一个空文件,将原来的内容复制过去,将文件另存为 utf8 with bom 或 gb2312 格式,然后再用 CvtCNKI 进行转换。

UTF8 BOM 问题不仅影响到 Wordpress 和 CvtCNKI,甚至很多专业的字处理程序都很难妥善处理。比如 Windows 自带的记事本(Notepad.exe),只能打开含有 BOM 的 UTF8 文件。而著名的字处理软件 UltraEdit 却对含有 BOM 的文件很不友好,喜欢自己再给文件添加一个 BOM,结果将原来的文件给破坏掉了;不过这个问题可以通过将 Write UTF-8 BOM header to ALL UTF-8 files when saved 设置为 OFF 来解决。

由此可见,要处理好 UTF8 编码问题,还真是一个麻烦事。为了尽量减少这种麻烦,我这里推荐一个比较好用的文本编辑器 EmEditor 。这个软件可以非常好的处理好各种编码格式的文件,并且速度非常快。如果你是学生或者科研人员,还可以免费申请注册码,等你将来有了钱,再正式购买。如果你不喜欢这类收费软件,也可以尝试一下 Notepad++ ,这是一款开源的文字处理软件,用起来也很棒。

Topics: CvtCNKI, Wordpress, 程序设计 | 1,470 Views |


5 comments | Add One

  1. 杜罗华 - 03/30/2007 at 10:19 下午 #

    编码的问题确实让人头痛。
    不过我记得我用Emeditor汉化了一个Wordpress主题,并没有出现乱码。可能主题原文件就是用UTF8编码的吧。
    感觉好像很多关于计算机的方方面面都没有做同一的规范,比如Firefox与IE,Xvid和Divx,TTA与APE,RGB与CMYK,MP3与WMV,无法穷举……

  2. 嘉林 - 10/13/2007 at 1:26 下午 #

    我的Wordpress(汉化版)主题中不能正常显示汉字!
    请问博客,我该怎么修改主题?或者是应该怎么做呀?

  3. 嘉林 - 10/13/2007 at 1:27 下午 #

    我发现你这里也会显示汉字乱码。

  4. Jiang - 10/13/2007 at 2:21 下午 #

    @嘉林,汉化一般不包括主题,都是指程序后台;我这里先是乱码,主要应该是sk2验证的时候是乱码吧?

  5. Vivay - 02/20/2008 at 1:21 上午 #

    看了这里才知道,原来总统也是搞程序设计的呀~
    我的主业跟你差不多,可现在只像个痞子罢了

请您发表评论

姓名 (必填)

Email (不会公开) (必填)

网站


Hostgator
LinkWorth
Ad

酷站链接 (Featured Links)

最新评论 (Recent Comments)

  • Love Blog Earn: 据jiang提供的消息:此次维护升级的内容包括,Apache (Web 服务器软件)将升级到版本 2.2.10 (...
  • 天下没贼: 经过前面之4,之5,以及之6的介绍,我们已经安装好了 Wordpress 。或许趁中间间歇的功夫,你已...
  • 天下没贼: 本文链接: http://jiangzhanyong.com/2007/03/wordpress-lesson-nine-manage-226.html 整个 Yo2 上的相关文章:Wordpress ...
  • 天下没贼: 上一次教程我们讲解了如何撰写博文。现在我们来讲解 WordPress 后台的内容管理功能。登陆 WordPre...
  • 天下没贼: 本文链接: http://jiangzhanyong.com/2007/03/wordpress-lesson-seven-set-up-215.html 整个 Yo2 上的相关文章:Wordpress ...
  • 天下没贼: 如果你喜欢本文或对博客赚钱感兴趣,请订阅本站全文 Feed(参考订阅帮助)。

搜索 (Search)

合作伙伴

推荐站点 (Recommendations)

Partner links

WordPressChina
  • 原创博客联盟