有人经常为MySQL存取数据涉及到的乱码感到烦心,其实解决这个问题非常简单。只需四步解决问题:
一、配置My.ini文件
[client]
port=3306
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
default-character-set=utf8
在My.ini文件中,在字段client、mysql和mysqld下面增加:default-character-set=utf8
如果你做了上面的改动,请重启MySQL,以至配置生效。
或者直接在MySQL控制台中执行:
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 ;
二、建立数据库时的编码配置
建立数据库时默认就是下面的值:
Character set: utf8
Collation: utf8_general_ci
如下图所示:
三、检验配置结果
如果更改My.ini配置文件,请重启MySQL服务。
通过 show variables like 'character%' 和 show variables like 'collation_%' 命令可查看配置结果,如下图所示:
四、PHP中要注意的4个地方
1、在PHP页面开头要加上
- header('conten-type:text/html;charset=utf-8');
2、在执行CRUD操作前先执行一下
- mysql_query("set names 'utf8'");
3、综合小例子
- <?php
- header("Content-Type:text/html;charset=utf-8");
- $conn=@mysql_connect("localhost","root","123456") or die("数据库连接错误");
- mysql_select_db("test",$conn);
- mysql_query("set names 'UTF8'");
- ...
- 插入数据/读取数据/修改数据
- ...
- ?>
4、保存PHP文件时要保存为utf8格式,不要选择BOM。如下图所示:
注:我使用的编辑器是:EmEditor
结束语
配置成功,你将在也不会因为mySQL而出现的乱码而烦恼了。