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, 程序设计 | 5,492 views | 6 Comments »


6 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 上午 #

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

  6. 珠海装修公司 - 05/3/2011 at 7:35 下午 #

    用UTF8编码就对了!

LinkWorth
Hostgator

酷站链接 (Featured Links)

最新评论 (Recent Comments)

  • air jordan shoe: 不错,挺厉害的~~
  • Hairstyles: 原来链接这么重要!
  • Haircuts: 有空试一下看看
  • CHI Flat Iron: 哇,这么多插件啊,慢慢看!
  • 诗酒如画: 1)备份你的WordPress数据库 推荐用WordPress Database Backup在后台操作.下载备份的压缩包或者是传到自己邮箱里都可以. 如果直接在数据库中备份的话,记得选择UTF8编码,切记. 2)备份你的程序...
  • north face wholesale: en ,我会试一试的。

搜索 (Search)

合作伙伴

推荐站点 (Recommendations)

Partner links

WordPressChina
  • 原创博客联盟