日志分类:PHP

PHP代码中MYSQL乱码使用SET NAMES utf8校正

分类:PHP评论:1条作者:雨尚日期:2011-08-18

PHP代码中mysql乱码使用SET NAMES utf8校正

 

数据库里是utf8编码方式,页面上也用的是utf8方式,但是汉字在页面上不能正常显示,全是乱码,但在数据库里面却显示正常。甚是奇怪。下面这段是页面里的设置:

$link=mysql_connect(“localhost”,”root”,”");
$db=mysql_select_db(“aaa”);
mysql_query(“set names utf8″,$link);

然后就是数据库的操作。

问题就出在这,仅仅是个人理解,不一定正确,但能解决问题:

mysql_query(“set names utf8″,$link);这句话的意思是引用数据库数据时用utf8方式,但是页面显示却要用gbk方式,所以要进行编码转换,而且要在对数据库操作之前进行,所以就要再加上一句话:mysql_query(“SET NAMES gbk”);//在对数据库操作前要进行编码转换

注意页面读出的编码是把原来编码的内容重新经过编码后输出的,比如输出内容所在页面是GBK编码,那么在读出的时候在页面显示也为乱码,所以在查询之前执行 mysql_query(“SET NAMES gbk”),在页面就可以正常显示GBK编码的文字内容 。

所以正确的写法是:

$link=mysql_connect(“localhost”,”root”,”");
$db=mysql_select_db(“aaa”);
mysql_query(“set names utf8″,$link);
mysql_query(“SET NAMES gbk”);

 

Tags: , , ,