页面装载中...

利用插件转换老 WordPress 数据库表编码

众所周知,老版本的 WordPress 生成的数据库表的编码是 latin1,也就是 ISO-8859-1,这种编码对中文支持不好,直接的影响就是使用 phpMyAdmin 备份出来的表里面中文全部是乱码,上次我还专门介绍了 wp-db-backup 这个插件,用它才能成功地将老 WordPress 的数据库备份出来,前提是不破坏中文。

今天我们将利用它备份出来的数据库,彻底地将 WordPress 的个表的编码从 latin1-swedish-ci 转为 utf8-general-ci。下面我以 step by step 的形式列一下步骤:

  1. 使用 wp-db-backup 备份所有数据库表,以防操作失败造成毁灭性后果。
  2. 确认第一步备份的数据库可用。压缩包在下载过程中很容易损坏。
  3. 解压出 SQL 文件,使用 UltraEdit 之类强大一点的文本编辑器打开。
  4. 查找“DEFAULT CHARSET=latin1”,把 WordPress 自己的十个表的这个字符串改为“DEFAULT CHARSET=utf8”。插件建立的表就不要改了。
  5. 危险的一步!使用 phpMyAdmin 将 WordPress 的数据库所有表全部 Drop 掉!
  6. 导入你刚才修改过的 SQL,phpMyAdmin 支持 zip 或 gz 压缩过的,最好压缩一下再传,速度快些。
  7. 点击 phpMyAdmin 的 structure 查看数据库结构,那十个表的编码应该已经变为“utf8-general-ci”了。
  8. 最后一步。修改 wp-config.php 文件,添加这样一行,如果已经存在就改一下:define('DB_CHARSET', 'utf8');,OK 了啦~

完成上面的步骤以后,老 WordPress 用户也可以扔掉拐杖啦(如果实在想扔的话),现在用 phpMyAdmin 备份也不会出现乱码啦。

7Comment(s). Blabla or Trackback

  • 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 的话,这个问题应该不存在了。 ;-)

Blabla ↓

Connecting to server...