PHP不同版本PDO设置字符集

最近用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");

再运行插入,中文显示正常了!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值