MySQL 4.1x 中文乱码问题

梅西爱A米

梅西爱A米

2016-01-29 14:58

MySQL 4.1x 中文乱码问题,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“后终于找到了解决方法并测试通过。

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/mysql/)

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'");

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/mysql/)

这样子终于能正常显示中文的WordPress了。虽然后来还是没用Powweb,但是觉得这个经验会对别人有用。记得有人用email和我讨论过这样子的中文显示问题,但是我那时哪里知道问题出在MySQL 4.1x上。

还有,4.1x的数据库不向下兼容,所以升级的时候要三思啊。

展开更多 50%)
分享

猜你喜欢

MySQL 4.1x 中文乱码问题

MySQL mysql数据库
MySQL 4.1x 中文乱码问题

解决MySQL 4.1乱码问题

PHP
解决MySQL 4.1乱码问题

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

决PHP存取MySQL 4.1乱码问题

编程语言 网络编程
决PHP存取MySQL 4.1乱码问题

MySQL中文乱码问题的解决

编程语言 网络编程
MySQL中文乱码问题的解决

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

解析Hibernate + MySQL中文乱码问题

编程语言 网络编程
解析Hibernate + MySQL中文乱码问题

完美解决mysql中文乱码的问题

编程语言 网络编程
完美解决mysql中文乱码的问题

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

如何把ACCESS的数据导入到Mysql中

如何把ACCESS的数据导入到Mysql中

《萌将冲冲冲》三大职业介绍 职业选择攻略

《萌将冲冲冲》三大职业介绍 职业选择攻略
下拉加载更多内容 ↓