PHP中PDO解决中文乱码问题
米扑代理,在LAMP架构下部署没有中文乱码,在LNMP架构下搭建部署的却出现了中文乱码。起初以为是Nginx字符配置的问题,尝试了各种方法:
1. 将nginx中charset设为 utf-8
http { include mime.types; default_type application/octet-stream; charset utf-8; ... server { listen 80; server_name proxy.mimvp.com; charset utf-8,gbk; ... } ... }
2. 将CentOS字符集改为zh_cn.utf-8
vim /etc/sysconfig/i18n
LANG="en_US.UTF-8" SYSFONT="latarcyrheb-sun16" 修改为 LANG="zh_CN.UTF-8" SYSFONT="latarcyrheb-sun16" SUPPORTED="zh_CN.UTF-8:zh_CN:zh"
3. php文件保存为utf-8格式
4. 在php文件头添加
<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />
最后,调试代理,把问题定位到MySQL数据库连接字符串的问题!
解决方案:
第一种:
PDO::__construct( $dsn, $user, $pass, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'; ") );
第二种:PDO::__construct($dsn, $user, $pass);
PDO::exec(" set names 'utf8'; "); 推荐
第三种:$pdo->query(" set names 'utf8'; "); 推荐
第四种:$pdo->exec(" set character set utf8 ");
版权所有: 本文系米扑博客原创、转载、摘录,或修订后发表,最后更新于 2016-02-04 04:18:09
侵权处理: 本个人博客,不盈利,若侵犯了您的作品权,请联系博主删除,莫恶意,索钱财,感谢!
转载注明: PHP中PDO解决中文乱码问题 (米扑博客)