php乱码问题主要是由于中文的编码问题导致的,中文的编码一般用到的以gbk,utf8居多。
为了使中文编码不再乱码,解决方案如下:
1.在php中加上header("Content-type: text/html; charset=utf-8");这句话一定要在php的<?php 标记之后的第一句话开始。
即
<?php header("Content-type: text/html; charset=utf-8"); //added code ?>
2.设置数据库连接为utf-8编码,在操作数据库之前,这样声明
<?php header("Content-type: text/html; charset=utf-8"); //code mysql_query("set names ‘utf8‘"); //数据库操作 .... ?>
3.数据库的编码设置为utf-8(以mysql为例子)
查询字符集的方法:
我们在更改数据库字符集的时候这样做:1.拥有数据库配置文件的修改权限(可以修改my.ini):
如:在my.ini文件中找到下面的配置:
default-character-set = utf8
character_set_server = utf8
2.没有修改my.ini的配置权限(一般是在云主机上)
可以在phpAdmin中这样设置:
或者是执行sql命令:
mysql> SET character_set_client = utf8 ;
mysql> SET character_set_connection = utf8 ;
mysql> SET character_set_database = utf8 ;
mysql> SET character_set_results = utf8 ;
mysql> SET character_set_server = utf8 ;
mysql> SET collation_connection = utf8 ;
mysql> SET collation_database = utf8 ;
mysql> SET collation_server = utf8 ;
最后,如果在进行上述的操作,即:数据库的编码是utf8,数据表的编码是utf8,数据表字段的编码也是utf8,
这样仍然出现乱码的原因可能是在数据库连接的时候出现问题(数据库连接可能需要外部传入的参数,这个参数的编码也很重要)
这样的话我们要这样设置:
SET NAMES ‘utf8‘;
及在数据库执行操作之前加上这么一句:它的作用等同于: