为了今后wordpress数据库备份方便,把数据库默认的latin 1 转换成了utf8
大致过程如下:
1.备份 http://www.sh18.org/blog/ 数据库
2.用 EditPlus 打开 http://www.sh18.org/blog/备份的数据库 文件,查找“DEFAULT CHARSET=latin1” 用“DEFAULT CHARSET=utf8”替换.
3.创建一个新的数据库,用phpadmin进入界面后,
(1).点击左边你的数据库名后,右上方会有“Operations/操作”按钮,进入后最下面有“Collation:/整理: ”选项,选择 相应的utf8后按“go/执行”确认【这个步骤是把数据库默认编码设置成utf8】
(2).点击“Home /主目录”按钮 ,返回主界面 更改“MySQL connection collation: /collation (校勘)字符集”为utf8_general_ci 【这个步骤有什么用不知道,反正做了没坏处】
参考文档
http://www.zuola.com/weblog/?p=355
然后导入前面备份的数据库(修改过的,注意导入的时候选utf8)
4.更改WordPress程序中wp-includes/wp-db.php的文件:选择在56行处添加
$this->query(”SET NAMES ‘utf8′ “);
复制语句时小心字体哦,我复制的代码加入后报错,原来那些>”‘什么的都不正确。
更改后的情况是:
}
$this->query(”SET NAMES ‘utf8′ “);
$this->select($dbname);
}
5.更改 wp安装目录下的wp-config.php 文件,把里面数据库相应的参数修改为 新的数据库名字。
6.然后 登陆 www.sh18.org/blog 基本正常,发现文章的中文分类名出现“??”字符,进入后台,重新更改分类后一切正常.
7.发新贴看是否一切正常。。。。。
8.待测试。。。。
因为流量关系,为网站做了个镜像站点,等待流量快超标的时候做个域名转向来缓解压力。在新的服务器上安装 了Wordpress后,开始进行数据库操作:
1. 备份原来网站的数据库:操作很简单,进入PhpMyAdmin后选择导出,在表单选择框里选择全部。选择”另存为文件”中的”
2. 恢复备份数据库到新的服务器中:进入新服务
器的PhpMyAdmin,(因为已经在这里建立了Wordpress,所以已经存在一个新的数据库了),在”结构”中选择所有表单,然后在”选中项”中
选择”删除”,原有的数据库清空。然后在”SQL”中点击”浏览”选择刚才备份的数据库文件,点击”执行”即可。
可在这个时候出现了问题:总是说什么超出了Memory,或者说超过了30秒的限制,无法正常导入。导入数据库文件大小限制一般为2M,我的备份文件不过才800多KB,为什么不行呢?后来明白,可能是新的服务器连接速度有些慢,所以在进行导入时,总是超过了时间限制。
解决办法:备份数据库时,分几次备份不同的表单,而不是一次重复全部,就这样重复1,2两个步骤三次,总算把数据库正常导入了。
3. 站内链接调整:因为数据库相同,当然网站里所有站内链接也会和原来的相同,全部指向的还是原来的服务器地址。在PhpMyAdmin里选择数据库中的”wp_options“表单,点击”浏览”然后按”option_name”排列主键顺序,找到”option_name”键值为”siteurl”一项,点击”编辑”按钮,把里面的原来网站链接地址改为新的。然后找到”home”一项,同样编辑把链接改成新的网址。
所有数据库操作完成,
登陆网站查看,一下子傻了,除了我在侧边栏里写的自我简介那几个字是正常汉字,其它全以”?”显示。难道字符设置不对?不可能啊数据库是原来的,当然字符
设置也是原来的”utf-8″。上网找答案,原来以前MySQL版本为4.0的转到4.1或者更高版本时,会出现乱码。上服务器的说明中查看,原来老的服
务器MySQL版本为4.0,而新的服务器版本为5.0,晕哦,可真先进。继续google,在”桑林志“的”MySQL 4.1x 中文乱码问题“中找到了解决方案。
1. 设置数据库的”collation”为”utf8_general_ci”:因为在新的服务器中建立数据库时,没有指定其为utf-8,更没设定collation,所以需要先设定数据库的字符集。
执行命令:
alter database myblog
character set utf8;
然后再在”操作”或者数据库PhpMyAdmin的登陆页面中设定collation为”utf8_general_ci”。
2. 更改WordPress程序中wp-includes/wp-db.php的文件:我是选择了在56行处,而不是44行处(桑林志的做法)加入了如下语句:
$this->query(”SET NAMES ‘utf8′”);
复制语句时小心字体哦,我复制的代码加入后报错,原来那些>”‘什么的都不正确。
再次登陆网站查看,终于一切正常!!!整个操作时间耗费了大概6个小时,主要是网上查找解答太费时间,而且在设定collation时麻烦不小,因为我原来的服务器竟然关闭了调整Collation的命令。显示为:”使用链接表的额外特性尚未激活。要查出原因,请单击此处。”,还好它默认为字符集为”UTF-8″不然估计我的数据库是无论如何都不能恢复到更高版本的MySQL里了。
@mysql_query(“SET NAMES ‘utf8′”);
不错,这句简直就是万能语句,只要保证页面用u8,数据库u8,很多问题都能解决,zen-cart,joomla都很好用,呵呵
我想问一下。我把我的英文模板的一些php文件换成了UTF8的编码 是不是就依偎着所有的php文件都要换成这个编码呢?是不是还要在程序的某个地方设置一下整个blog的编码?
我现在发现我的feed也有点问题,feedsky和feedburner已经很久没有抓取过我的feed了
请给我邮件或者到我的blog留言好吗?我不一定能及时看到你的回复。谢谢