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的数据库不向下兼容,以是进级的时辰要三思啊。



版权声明: 原创作品,承诺转载,转载时请务必以超链接方式标明文章 原始因由 、作者信息和本声明。不然将穷究法律责任。

原文地址:https://www.cnblogs.com/zgqjymx/p/1976004.html