March 28, 2008
利用插件转换老 WordPress 数据库表编码
众所周知,老版本的 WordPress 生成的数据库表的编码是 latin1,也就是 ISO-8859-1,这种编码对中文支持不好,直接的影响就是使用 phpMyAdmin 备份出来的表里面中文全部是乱码,上次我还专门介绍了 wp-db-backup 这个插件,用它才能成功地将老 WordPress 的数据库备份出来,前提是不破坏中文。
今天我们将利用它备份出来的数据库,彻底地将 WordPress 的十个表的编码从 latin1-swedish-ci 转为 utf8-general-ci。下面我以 step by step 的形式列一下步骤:
- 使用 wp-db-backup 备份所有数据库表,以防操作失败造成毁灭性后果。
- 确认第一步备份的数据库可用。压缩包在下载过程中很容易损坏。
- 解压出 SQL 文件,使用 UltraEdit 之类强大一点的文本编辑器打开。
- 查找“DEFAULT CHARSET=latin1”,把 WordPress 自己的十个表的这个字符串改为“DEFAULT CHARSET=utf8”。插件建立的表就不要改了。
- 危险的一步!使用 phpMyAdmin 将 WordPress 的数据库所有表全部 Drop 掉!
- 导入你刚才修改过的 SQL,phpMyAdmin 支持 zip 或 gz 压缩过的,最好压缩一下再传,速度快些。
- 点击 phpMyAdmin 的 structure 查看数据库结构,那十个表的编码应该已经变为“utf8-general-ci”了。
- 最后一步。修改 wp-config.php 文件,添加这样一行,如果已经存在就改一下:
define('DB_CHARSET', 'utf8');,OK 了啦~
完成上面的步骤以后,老 WordPress 用户也可以扔掉拐杖啦(如果实在想扔的话),现在用 phpMyAdmin 备份也不会出现乱码啦。
Alan at 18:09 Mar 28, 2008 ₪
好文,收藏了
kevin at 19:12 Mar 28, 2008 ₪
最容易出错的是第6步
因为表太大,一般的合租服务器都是传不上去的
我的做法是拆分,一个表一个表的传
北极冰仔 at 20:08 Mar 28, 2008 ₪
@kevin 这样啊,我到目前还从来没有遇到过传不成功的情况。即使压缩后大小为 4M 左右的库(未压缩时为 20 多 M)。
非常秀 at 22:21 Mar 30, 2008 ₪
谢谢,我用得到
何必呢 at 07:28 Apr 01, 2008 ₪
Good~转换成功了~
积水成渊博客 at 19:20 Apr 06, 2008 ₪
这个太重要了,我还一直以为直接备份数据库就可以完事。不知道这和Wordpress的版本是否有关?2.5解决了这个问题了吗?
北极冰仔 at 19:43 Apr 06, 2008 ₪
@积水成渊博客 如果你不是从 2.1.x 或 2.0.x 开始用起 WP 的话,这个问题应该不存在了。