本篇文章主要介绍了"PHP不同版本PDO设置字符集",主要涉及到方面的内容,对于MySql感兴趣的同学可以参考一下:
最近用PDO操作MySQL,自己在Mac上测试的好好的。SQL文件、代码一起上到服务器上,写入数据到MySQL中,中文全部乱码。首先,查看了MySQL服务端的编...
最近用PDO操作MySQL,自己在Mac上测试的好好的。SQL文件、代码一起上到服务器上,写入数据到MySQL中,中文全部乱码。
首先,查看了MySQL服务端的编码,全部是UTF-8,在看数据库、表、相关字段,全都是utf8_general_ci。
然后,看代码,也设置了字符集:
$dns = 'mysql:dbname=sausagedb;host=127.0.0.1;charset=utf8';
$user = 'root';
$password = '111111';
$dbh = new PDO($dns, $user, $password);
可是,插入的数据的中文部分,仍然乱码。之后,用PHP直接连接MySQL,加了一句:
mysql_query("SET NAMES 'utf8'");
插入的数据中文部分,已经显示正常了。说明服务端没有问题,有问题的还是代码。
实在找不到原因,到网上搜了一下。原来PDO在PHP 5.3.6之后的版本,如上面设置的是有效的。低于5.3.6版本的,需要用下面的方法设置:
$dbh = new PDO($dns, $user, $password);
$dbh->exec("set names utf8");
再运行插入,中文显示正常了!
以上就介绍了PHP不同版本PDO设置字符集,包括了方面的内容,希望对MySql有兴趣的朋友有所帮助。
本文网址链接:http://www.codes51.com/article/detail_136033.html