MySQL 4.1x 中文乱码结果

滥觞:网海拾贝




目前年夜都host装的照旧MySQL 4.0x 版本以下,倘使晋级到了4.1x 或者挪动到运用4.1x 的主机上,估计会碰到一些结果。我在powweb上碰到了两个结果。

一是数据导入。在phpMyAdmin内导入后,发明中文变成了乱码。搜索学习后,观点到需求设置数据库的collation (校勘),倘使你的数据库是utf-8的,设置为utf8_general_ci就可以了。

二是,纵然准确导入了,在phpMyAdmin里也能准确示意,但WordPress页面上示意的文章内容都是“???”,而模板内中的汉字都能正常示意。这让我头疼了良久。搜索到Windix’s Weblog上有对此的分解');:

从MySQL 4.1初步引入的多言语支持切实其实很棒,而且一些特性曾经凌驾了其他的数据库琐屑。不外我在测试过程中发明运用合用于MySQL 4.1之前的PHP语句操纵MySQL数据库会形成乱码,纵然是设置过了表字符集也是云云。我读了一下新的MySQL在线手册中第十章”Character Set Support“后终于找到观点决要领并测试经过。

MySQL 4.1的字符集支持(Character Set Support)有两个方面:字符集(Character set)和排序体例(Collation)。对付字符集的支持细化到四个条理: 做事器(server),数据库(database),数据表(table)和跟尾(connection)。

当我们根据本来的体例经过PHP存取MySQL数据库时,就算设置了表的默许字符集为utf8而且经过UTF-8编码发送查问,你会发明存入数据库的依旧是乱码。结果就出在这个connection跟尾层上。管理要领是在发送查问前执行一下上面这句:

SET NAMES ‘utf8′;

然则我照旧不知道,如何,在何处让WordPress运转这个SQL语句。后来在阿修的部落格上查到要领:

為著解決這個問題必須去修正wp-includes/wp-db.php內的資料連線設定。詳細的修正体例是這樣的:

$this->dbh = @mysql_connect($dbhost,$dbuser,$dbpassword);
//加上上面這行
$this->query("SET NAMES 'utf8'");


这样子终于能正常示意中文的WordPress了。虽然后来照旧没用Powweb,然则觉得这个阅历会对别人有用。记得有人用email和我计议过这样子的中文示意结果,然则我当时那儿知道结果出在MySQL 4.1x上。

还有,4.1x的数据库不向下兼容,以是晋级的时辰要三思啊。



版权声明: 原创作品,容许转载,转载时请务必以超链接方式标明文章 原始出处 、作者信息和本声明。否则将究查法律责任。

posted @ 2011-03-08 00:40  蓝色的天空III  阅读(214)  评论(0编辑  收藏  举报