[原创]完美解决XOOPS及WordPress在MySQL4.1之后版本中的乱码问题 |
||||
---|---|---|---|---|
网站管理员
注册日期:
2005/10/29 13:32 来自 北京
所属群组:
网站管理员 注册会员 ComSupp 推广组 等级: 38; EXP: 43
HP: 187 / 935 MP: 738 / 13865 |
完美解决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了!
2006/1/3 12:34
|
|||
|
回复: [原创]完美解决XOOPS及WordPress在MySQL4.1之后版本中的乱码问题 |
||||
---|---|---|---|---|
Support Team
注册日期:
2004/7/15 17:43 所属群组:
注册会员 技术文档组 Dev+Hack 等级: 17; EXP: 46
HP: 0 / 411 MP: 116 / 7646 |
先顶一个,回头试下~
2006/1/3 14:24
|
|||
|
回复: [原创]完美解决XOOPS及WordPress在MySQL4.1之后版本中的乱码问题 |
||||
---|---|---|---|---|
项目管理员
注册日期:
2005/6/1 11:00 来自 北京
所属群组:
注册会员 ComSupp
帖子:
250
等级: 14; EXP: 78
HP: 0 / 344 MP: 83 / 5520 |
好东东,收藏了。
2006/1/3 16:14
|
|||
|
回复: [原创]完美解决XOOPS及WordPress在MySQL4.1之后版本中的乱码问题 |
||||
---|---|---|---|---|
网站管理员
注册日期:
2005/10/29 13:32 来自 北京
所属群组:
网站管理员 注册会员 ComSupp 推广组 等级: 38; EXP: 43
HP: 187 / 935 MP: 738 / 13865 |
补充:文中提到的WAMP5,强烈推荐新手使用,网址为:http://www.wampserver.com/en/index.php
如果各位访问不了的话,请使用代理。(今日测试可用代理一个 61.32.153.248:50050) WAMP5安装之后有一个重要的设置,就是修改MySQL的默认编码为utf8! 菜单:config files/my.ini 修改:default-character-set=utf8
2006/1/3 16:24
|
|||
|
回复: [原创]完美解决XOOPS及WordPress在MySQL4.1之后版本中的乱码问题 |
||||
---|---|---|---|---|
网站管理员
注册日期:
2005/10/29 13:32 来自 北京
所属群组:
网站管理员 注册会员 ComSupp 推广组 等级: 38; EXP: 43
HP: 187 / 935 MP: 738 / 13865 |
如果你使用的XOOPS是2.0.13.2版本,那么修改的位置在239-240行左右,参考修改结果如下:
@mysql_query("SET NAMES 'utf8'", $this->conn); $result =& mysql_query($sql, $this->conn);
2006/4/7 13:41
|
|||
|
回复: [原创]完美解决XOOPS及WordPress在MySQL4.1之后版本中的乱码问题 |
||||
---|---|---|---|---|
新进会员
注册日期:
2005/10/11 13:09 所属群组:
注册会员 等级: 3; EXP: 9
HP: 0 / 52 MP: 6 / 782 |
感谢楼主的分享.还有一个问题,就是日版的xoops cube和xoops 2.0.13.2版本是不支持mysql 5.0的,不知道使用了您的方法修改后,
是否就可以在mysql 5.0上装上xoops cube和 2.0.13.2呢?
2006/4/7 15:48
|
|||
|
回复: [原创]完美解决XOOPS及WordPress在MySQL4.1之后版本中的乱码问题 |
||||
---|---|---|---|---|
新进会员
注册日期:
2006/7/9 13:24 所属群组:
注册会员
帖子:
3
等级: 1; EXP: 10
HP: 0 / 2 MP: 1 / 34 |
请问,最新的2.0.14版本.应该修改哪个语句?
我在同一个文件里找不到相关语句 谢谢指教
2006/7/9 19:43
|
|||
|
回复: [原创]完美解决XOOPS及WordPress在MySQL4.1之后版本中的乱码问题 |
||||
---|---|---|---|---|
新进会员
注册日期:
2006/7/9 13:24 所属群组:
注册会员
帖子:
3
等级: 1; EXP: 10
HP: 0 / 2 MP: 1 / 34 |
2.0.14相关语句如下
2006/7/9 19:47
|
|||
|
回复: [原创]完美解决XOOPS及WordPress在MySQL4.1之后版本中的乱码问题 |
||||
---|---|---|---|---|
新进会员
注册日期:
2006/7/9 13:24 所属群组:
注册会员
帖子:
3
等级: 1; EXP: 10
HP: 0 / 2 MP: 1 / 34 |
明白了
$result = mysql_query($sql, $this->conn); 的上面,添加 @mysql_query("SET NAMES 'utf8'", $this->conn);
2006/7/9 19:54
|
|||
|
回复: [原创]完美解决XOOPS及WordPress在MySQL4.1之后版本中的乱码问题 |
||||
---|---|---|---|---|
高级会员
注册日期:
2007/4/18 12:59 来自 厦门
所属群组:
注册会员
帖子:
88
等级: 8; EXP: 35
HP: 0 / 183 MP: 29 / 1935 |
用Xoops模式(多用户,每个用户有自己独立的页面)时 新写的文章会乱码 包括分类也会乱码。。。
如果用wordpress(单用户) 调到首页的内容会乱码,在 wordpress下是不会的。如:http://westdream.org/modules/wordpress/ 我的问题 还没解决
2007/5/5 17:52
|
|||
|