[原创]完美解决XOOPS及WordPress在MySQL4.1之后版本中的乱码问题 |
||
---|---|---|
Support Team
注册日期:
2005/10/29 13:32 来自 北京
所属群组:
网站管理员 注册会员 帖子:
471
等级: 20; EXP: 9
HP : 190 / 477 MP : 157 / 794 |
完美解决XOOPS及WordPress在MySQL4.1之后版本中的乱码问题
[作者]:domecc [欢迎各位提出疑问]:chweifly[at]gmail[dot]com [原创作品,转载请注明来源]:XOOPS China! 引言 MySQL为解决并控制不同层次的不同字符编码问题,在4.1以上版本对字符集的支持细化到四个层次: 服务器(server)、数据库(database)、数据表(table)和连接(connection)。 MySQL通过以下三个方面来控制各个层次的字符编码:MySQL字符集(Character set)、MySQL连接校对(Collation,整理)以及站点编码。 但是控制的细化往往造成了复杂性,稍有不慎就有可能出现乱码问题。 问题描述 1、基本配置: 1)XOOPS程序2.25简体中文版,编码gb2312; 2)WAMP5 1.6.0(个人认为比AppServ好的多),其中MySQL为4.1以上版本,默认编码为utf8; 3)pypMyAdmin中,语言设置为Chinese simplified (zh-utf-8),MySQL连接校对设置为utf8_general_ci; 2、症状描述: 1)安装正常,而且站点使用正常,包括中文; 2)在phpMyAdmin中,所有中文都是乱码! 3、参见帖子:数据库的乱码问题!!。 问题分析 从MySQL的三个控制层来说,MySQL字符集(utf8)、MySQL连接校对(utf8_general_ci)以及站点编码(gb2312)没有任何问题,因为MySQL4.1以上版本支持这样混合的字符编码。 产生问题的真正原因是,在保存数据的时候,MySQL并不清楚网站提交的字符编码是gb2312,为此MySQL保存时就不知道用什么编码来保存数据,因此产生了乱码! 乱码解决办法 根据以上分析,只要我们指定网站提交的字符编码,那么MySQL就可以明白无误的用相应编码保存数据! 总结设置步骤如下: 1、在MySQL中设置默认编码为utf8。之后你在phpMyAdmin中就会看到不可修改项“MySQL 字符集: UTF-8 Unicode (utf8)” 2、在phpMyAdmin中,语言设置为Chinese simplified (zh-utf-8) 3、在phpMyAdmin中,MySQL连接校对设置为utf8_general_ci 4、在phpMyAdmin中,新增数据库和数据表的时候,整理项设置为utf8_general_ci !!前面这四个步骤跟原来相比没有变化,关键是这下面一步的设置!! 5、根据XOOPS站点编码的不同,相应的修改文件“XOOPS/class/database/mysqldatabase.php”: 1)如果XOOPS的站点编码是utf8,那么在文件第248行添加:@mysql_query("SET NAMES 'utf8'", $this->conn); 2)如果XOOPS的站点编码是gb2312,那么在文件第248行添加:@mysql_query("SET NAMES 'gb2312'", $this->conn); 修改结果参照如下: else { //just execute the query @mysql_query("SET NAMES 'gb2312'", $this->conn); $result = mysql_query($sql, $this->conn); } 恭喜!设置完成!接下来照常安装XOOPS,就一切OK了! 同理,WordPress的乱码解决办法: 环境:WAMP5 1.6.0,其中MySQL为4.1以上版本,MySQL的默认编码UTF8;WordPress版本为2.0,编码UTF-8。 症状:正常安装,站点正常使用中文,可是进入phpMyAdmin,其中的中文都是乱码! 原因:同上,略。 解决:修改文件“WordPress/wp-includes/wp-db.php”,在第58行添加下边两行: mysql_query("SET NAMES 'UTF8'"); mysql_query("SET CHARACTER SET UTF8"); 修改结果参照如下: function wpdb($dbuser, $dbpassword, $dbname, $dbhost) { $this->dbh = @mysql_connect($dbhost, $dbuser, $dbpassword); if (!$this->dbh) { $this->bail("……"); } $this->select($dbname); mysql_query("SET NAMES 'UTF8'"); mysql_query("SET CHARACTER SET UTF8"); } 恭喜!设置完成!接下来照常安装WordPress,就一切OK了!
1/3 12:34:33
|
|
工具箱 |
回复: [原创]完美解决XOOPS及WordPress在MySQL4.1之后版本中的乱码问题 |
||
---|---|---|
Support Team
注册日期:
2004/7/15 17:43 所属群组:
注册会员 技术文档组 Dev+Hack 帖子:
244
等级: 14; EXP: 60
HP : 0 / 340 MP : 81 / 1845 |
先顶一个,回头试下~
1/3 14:24:40
|
|
工具箱 |
回复: [原创]完美解决XOOPS及WordPress在MySQL4.1之后版本中的乱码问题 |
||
---|---|---|
网站管理员
注册日期:
2005/6/1 11:00 来自 北京海淀
所属群组:
网站管理员 注册会员 ComSupp 帖子:
202
等级: 13; EXP: 25
HP : 61 / 306 MP : 67 / 877 |
好东东,收藏了。
1/3 16:14:05
|
|
工具箱 |
回复: [原创]完美解决XOOPS及WordPress在MySQL4.1之后版本中的乱码问题 |
||
---|---|---|
Support Team
注册日期:
2005/10/29 13:32 来自 北京
所属群组:
网站管理员 注册会员 帖子:
471
等级: 20; EXP: 9
HP : 190 / 477 MP : 157 / 794 |
补充:文中提到的WAMP5,强烈推荐新手使用,网址为:http://www.wampserver.com/en/index.php
如果各位访问不了的话,请使用代理。(今日测试可用代理一个 61.32.153.248:50050) WAMP5安装之后有一个重要的设置,就是修改MySQL的默认编码为utf8! 菜单:config files/my.ini 修改:default-character-set=utf8
1/3 16:24:20
|
|
工具箱 |
回复: [原创]完美解决XOOPS及WordPress在MySQL4.1之后版本中的乱码问题 |
||
---|---|---|
Support Team
注册日期:
2005/10/29 13:32 来自 北京
所属群组:
网站管理员 注册会员 帖子:
471
等级: 20; EXP: 9
HP : 190 / 477 MP : 157 / 794 |
如果你使用的XOOPS是2.0.13.2版本,那么修改的位置在239-240行左右,参考修改结果如下:
@mysql_query("SET NAMES 'utf8'", $this->conn); $result =& mysql_query($sql, $this->conn);
4/7 13:41:35
|
|
工具箱 |
回复: [原创]完美解决XOOPS及WordPress在MySQL4.1之后版本中的乱码问题 |
||
---|---|---|
新进会员
注册日期:
2005/10/11 13:09 所属群组:
注册会员 帖子:
17
等级: 2; EXP: 86
HP : 0 / 46 MP : 5 / 84 |
感谢楼主的分享.还有一个问题,就是日版的xoops cube和xoops 2.0.13.2版本是不支持mysql 5.0的,不知道使用了您的方法修改后,
是否就可以在mysql 5.0上装上xoops cube和 2.0.13.2呢?
4/7 15:48:16
|
|
工具箱 |