您的位置:首页 > 编程语言 > PHP开发

PHP与Mysql通过PDO交互时在浏览器中产生乱码的解决方法

2010-02-27 01:57 543 查看
经过2天的研究,解决了PHP与Mysql通过PDO交互在浏览器中产生正确的中文结果。

首先,要明确一点,最好使用utf-8格式的文件进行PHP的代码编写,其次,要使用utf-8格式的Mysql数据库,第三点,要在使用PDO链接数据库后,使用SQL语句之前使用“set names utf8”这样的语句。而不能使用PDO::__construct中的预先执行指令的方式执行“set names utf8”,因为后一种方法在具体使用过程中并没有产生作用。

本以为,在网页及数据库中表示中文,需要在传输过程中encode和decode,但是,实际并没有进行这样的操作,从浏览器获取的中文直接以post的方式发送给了服务器,服务器将原始数据直接就能存入数据库;从数据库读出中文到传输给浏览器这一过程也没有进行encode,并且到了浏览器后,使用JavaScript插入到当前网页中,也没有unescape,同样能显示中文。

之前为什么没有能够正确显示中文,主要原因就在于以什么编码为主。以GB2312编码为主,那么PHP服务器不可避免的要使用utf-8编码,就需要进行编码转换,如果Mysql中使用了GB2312编码,也会变得较为复杂,特别是对Mysql的存取变得非常离奇古怪。

总之,所有应用中都使用utf-8编码格式,是一种更优的解决方案,数据传递过程及存储过程中不需要对数据进行encode和decode,减少了不必要的麻烦,能够让程序员将注意力集中到解决事务逻辑的层次上来。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: