数据库采用UTF8编码,而页面申明编码是GB2312,这是最常见的产生乱码的原因。这时候在PHP脚本里面直接SELECT数据出来的就是乱码,需要在查询前先使用:mysql_query("SET NAMES GBK");或mysql_query("SET NAMES GB2312");来设定MYSQL连接编码,保证页面申明编码与这里设定的连接编码一致(GBK是GB2312的扩展)。如果页面是UTF-8编码的话,可以用:mysql_query("SET NAMES UTF8"); 注意是UTF8而不是一般用的UTF-8。假如页面申明的编码与数据库内部编码一致可以不设定连接编码。
成都创新互联公司专注为客户提供全方位的互联网综合服务,包含不限于成都做网站、成都网站制作、容城网络推广、成都微信小程序、容城网络营销、容城企业策划、容城品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;成都创新互联公司为所有大学生创业者提供容城建站搭建服务,24小时服务热线:18980820575,官方网址:www.cdcxhl.com
事实上MYSQL配置文件my.ini中定义了2个默认编码,分别是[client]里的default-character-set和[mysqld]里的default-character-set来分别设定默认时候客户端连接和数据库内部所采用的编码。上面指定的编码其实是MYSQL客户端连接服务器时候的命令行参数character_set_client,来告诉MYSQL服务器接受到的客户端数据是什么编码的,而不是采用默认编码。
转自:
确保三码合一就可以了..
第一个是数据库的字符集
第二个就是存进去的时候字符集
第三个就是显示的时候的字符集
这三个都有可能造成乱码;
第一个 举例是:如果你插入的时候用的是GB2312 ,但你表中的default charset是utf8 那么,就有可能乱码了.
第二种情况就是你插入正确 但你查询的时候以UTF8查询出来,但你在HTML页面里设置编码如果非UTF8那么也有可能造成乱码.
按以下步骤检查处理。
(1)HTML编码指定是否正确?检查head段中是否包含以下
meta
http-equiv="Content-type"
content="text/html;
charset=utf-8"
/
(2)检查HTML文件本身的编码有无问题。
(3)查询数据库之前设置编码。
$sql
=
"set
names
utf8";
mysql_query($sql,$local_conn);
(4)检查数据库编码及数据表及字段编码是否均为UTF8。注意,数据库编码及表编码及字段编码不是一个概念。
试试把下面类似语句放到连接语句之后
mysql_query("SET NAMES UTF8");
或 PDO
$dbh-exe("SET NAMES UTF8");
用 SET NAMES UTF8 校正一下连接编码
因为PHP 连接数据库的过程中会经过三次编码转换,比如输出的的时候
MySql Server(UTF-8) - PHP Connection( Latin1) - UTF8页面的Result(UTF-8) 这时两种编码不兼容则产生乱码。