Total Pageviews

Friday, 10 February 2012

解决PHP写入、读取MYSQL数据库的数据出现中文乱码的问题

使用PHP和MYSQL开发过程中经常会遇到PHP写入或读取MYSQL数据库中数据,出现中文乱码的问题,英文和数字不会出现乱码。这个问题非常让人头痛,因为导致这个问题的原因比较多,比如网页和数据库编码不一致,不同版本MYSQL不兼容等,想一下找到解决方法还是有点困难的…今天我编写一个小程序的时候又遇到了这个问题。
       用php向mysql中写数据,在Dreamweaver中先设置了首选参数中的编码为utf-8,前后台页面都统一用utf-8(mysql默认就是用的utf-8,那就不必改了 ),但是一碰到向数据库里写的数据中有中文,打开phpmyadmin一看中文全是乱码,于是用Google查解决方法, 试了不少方法都不行,不是写入出现中文乱码就是读取出现中文乱码。  

        最后还是用常见的方法:mysql_query中的”set names charset”, 解决了。其中有一点要特别注意:PHP中设置使用“utf8”,而不是“utf-8”。就这样问题解决了,我也感到有点奇怪,平时把utf-8和utf8看做一回事,其实不然!

总结一下这个乱码问题的解决方法:

1.确认所有页面都统一使用同样的编码,强烈建议用utf-8;
2. 在用mysql_query作查询时无论是写入数据到mysql还是从mysql提数据出来,设置mysql_query(“set names utf8″)..,连接数据库时就设置,而且不要把这时的“utf8”写成“utf-8”,这点很重要。

设置了mysql_query(“set names ‘charset’”)之后,就不再出类似以下问题:

1.用php写入数据到mysql用phpmyadmin查看时中文变成了一堆不知所云的乱码;
2.用php写入到mysql的中文在phpmyadmin中查看正常,但PHP读出来显示到网页中时全都变成了”?????”。

No comments:

Post a Comment