Page

[mysql]令人抓狂的php+mysql的gbk、utf8中文乱码事件最终章

643Anson16-08-26


这两天mysql的中文乱码令我是在抓狂,彻夜难眠,身心疲惫。。那现在问题解决了好好总结一下。中文乱码出现的关键:php文件编码,html文件编码,mysql数据库编码是否统一?

中文乱码出现的关键:php文件编码,html文件编码,mysql数据库编码是否统一?


其中msyql数据库编码很多人会搞错,里面有默认的编码格式,需要修改mysql.ini配置文


character-set-server=utf8




第一、php文件编码


    ①设置header("content-type:text:html;charset=utf-8");

    ②使用记事本之外的编辑器保存文件为无bom头的utf8格式;

   blob.png

   blob.png


第二、html文件编码


   ①设置<meta charset="utf-8" />----HTML5通用格式;

   ②同php;


第三、mysql数据库编码

   

   ①创建数据库选择utf8格式;

   ②使用sql命令“SHOW VARIABLES LIKE ‘character%’;”查看完整的编码表;样本如下


  blob.png


  如果发现有些不是utf8格式的,修改mysql配置文件:


1、在[client]字段里加入default-character-set=utf8,如下:

[client]
port = 3306
socket = /var/lib/mysql/mysql.sock
default-character-set=utf8

2、在[mysqld]字段里加入character-set-server=utf8,如下:

[mysqld]
port = 3306
socket = /var/lib/mysql/mysql.sock
character-set-server=utf8

3、在[mysql]字段里加入default-character-set=utf8,如下:


[mysql]
no-auto-rehash
default-character-set=utf8

修改完成后,service mysql restart重启mysql服务就生效。


4、如果上面的都修改了还乱码,那剩下问题就一定在connection连接层上。解决方法是在发送查询前执行一下下面这句(直接写在SQL文件的最前面):
SET NAMES ‘utf8′;

它相当于下面的三句指令:

SET character_set_client = utf8;
SET character_set_results = utf8;
SET character_set_connection = utf8;


blob.png




来自ansion博客

2016-8-26