http://blog.eqiao.com/2004/06/02/gb2312big2wordpressutf-8/
今天偶然在"桑林志"上看到桑葚提出想将GB2312的WP转换为UTF-8( http://yanfeng.org/blog/index.php?p=193 ),正好我也准备将我作技术支持的几个WP作此转换,因此花了点时间尝试了一下,最后发现也不是件太难的事。
考虑到WP在中文世界的blogger中使用逐渐广泛,因此写一个简单的过程在这里,希望对大家有点用处。
首先,关于WP版本问题。
考虑到WP 1.2中的新特色,特别是新的plugin机制,我的建议是所有未升级的朋友,立即升级到1.2版本。
另外,考虑到新的WP 1.2安装,会默认使用 UTF-8 编码,因此新安装不存在此问题。因此,这里将升级和转换并在一起,作个简单介绍。
前提:
这里假定你的原来安装中,WP所用的 table prefix 为了 wp_。
另外,你的站点上安装有 phpMyAdmin ,版本最好是最新的 2.60(具体什么版本就可以我不确定,总之只要开始支持 zh-utf-8 / zh-tw-utf-8 就可以。
大致过程如下:
1 导出数据
通过浏览器指向phpmyadmin界面,然后一定要注意选择 Language 为 Chinese SImplified (zh) (对big5用户,选择 Traditional Chinese (zh-tw)),然后选择你要操作的数据库。
选择"导出"操作,然后通过 Shift或者 Ctrl加鼠标将你的WP安装的所有table全部选择(就是所有 wp_* table),然后导出存入你的硬盘中。
2 处理
为了保留原来的数据以作为备份以防止转换不成功,将对以前所有数据表使用一个新的前缀导入,如选择前缀为 wpnew_。
用编辑器打开刚刚导出的数据,要使用可以全局替换的编辑器,如在Windows下可以用 EditPlus, Linux下可以在 GNOME 中使用 gedit (以上正是我使用的软件),然后将 wp_ 全局替换为 wpnew_。
3 导入
浏览器刷新 phpMyAdmin 界面,这样回到phpMyAdmin进入初始界面,你可以重新选择 Language。这里,选择 Chinese Simplified (zh-utf-8) (big5用户则是 Traditional Chinese (zh-tw-utf-8))。
进入你的wp安装数据库,然后选择 "SQL"。
注意这里你可以通过浏览到你处理过的数据库备份文件方式,或者通过在 textarea 中粘贴的方式导入数据,这里如果是文件一次导入,要注意phpMyAdmin最大处理文件为4M。实际上最为安全的方式却是通过一段段复制粘贴来导入,因为太大的文件一次导入,很容易造成服务器 timeout 而失败。
全部数据导入后,可以说转换工作就完成了。大家可能不相信会如此简单,可是实际就是如此简单。关键点就是两条:导出时用gb2312/big5 (zh/zh-tw),导入时用 zh-utf-8/zh-tw-utf-8。
4 升级
首先使用ftp(或者shell操作,不过估计一般用户只能使用ftp)备份所有旧的wp安装文件。
然后上载1.2的文件覆盖所有旧的文件。因为多数站点都会有首页修改或者css的定制,因此上载时,注意 index.php, wp-config.php以及css文件不要替换。
将旧的wp-config.php下载下来,使用编辑器打开,将 $table_prefix 从 'wp_ '修改为 'wpnew_',然后上载覆盖原文件。
将index.php下载下来备用。
然后浏览器指向 yoursite.com/wp-admin/upgrade.php,很简单两步完成数据库更新。这里大家注意到,原先的gb2312或者big5存储的数据库已经原样保留,所有更新操作,都已经是针对以 wpnew_ 为前缀的utf-8格式存储的表。
然后到你的升级过的wp站点,登陆,然后到"Options->Reading",你可以看到 Encoding for pages and feeds 为 utf-8。
如果你在首页中加入了一些菜单或者别的中文内容,转换后你会发现,在新的 utf-8 编码下,这些内容是乱码,现在就要解决最后这个问题。
管理界面中到"Templates"操作,在 index.php 编辑区域中,将里面内容全部删除,然后使用编辑器,打开前面下载下来的 index.php,将其内容全部复制,然后粘贴进编辑框中,然后 "Update File"。
至此,就完成了升级到 WP 1.2 并同时转换编码为 UTF-8 的过程。
我想,所有使用 WP 的朋友都应该升级到1.2并作此转换。
此文中所提到的思想,应该对其他程序同样有用。
所有blog软件,特别是支持 pingback/trackback的软件,都应该鼓励用户全部使用 utf-8 编码,因为这样才能保证 trackback 内容的可读性。否则,不同编码的站点的trackback信息放在一起,你要不停地刷新页面编码才能看完所有内容。
还有就是,这样的转换后,RSS阅读器就可以很容易地阅读各个站点,而使用gb2312/big5的情况下,绝大多数 rss reader,特别是使用强语法检查的软件,都无法阅读生成的rss文件。
另外,提供 content feed 的站点或者服务,比如 CNBlog 的最新blog列表这样服务,应该提供 utf-8 格式,否则在使用 utf-8 的WP之类的blog站点上,其内容无法阅读。
(以上匆匆写成,组织混乱,不过技术角度,应该是有用的。如果有时间有必要再重新整理吧。)
评论