学习ThinkPHP时,中文插入乱码;
1)网页上设置了utf-8;
2)数据库设置‘DB_CHARSET‘=>‘UTF-8‘;
3)Mysql建表用的也是CHARSET=utf8;
但是结果在Mysql中查看还是乱码。
查看数据库的编码方式
mysql> show variables like
‘character\_set\_%‘;
+--------------------------+--------+
| Variable_name
| Value |
+--------------------------+--------+
|
character_set_client | latin1 |
| character_set_connection | latin1
|
| character_set_database | utf8 |
| character_set_filesystem |
binary |
| character_set_results | latin1 |
| character_set_server
| latin1 |
| character_set_system | utf8
|
+--------------------------+--------+
7 rows in set (0.24 sec)
之前以为以下四个保持一致就可以了,但是发现退出mysql再次进入之后,编码方式又变回到latin1。
set character_set_client=utf8;
set character_set_database=utf8;
set character_set_results=utf8;
set character_set_server=utf8;
搜索了一下修改的方法,推荐 http://www.jb51.net/article/30104.htm
1、找到mysql的配置文件,拷贝到etc目录下(可以不用停止mysql服务),这一步很重要
把/usr/share/doc/mysql-server-5.1.73/my-large.cnf 复制到 /etc/my.cnf
即用命令:cp /usr/share/doc/mysql-server-5.1.73/my-large.cnf /etc/my.cnf
(目录中mysql-server-5.1.73的版本号可能都不太一样,修改以下即可)
2、打开my.cnf修改编码
在[client]下增加default-character-set=utf8
在[mysqld]下增加default-character-set=utf8
同时加上init_connect=‘SET NAMES utf8‘ (设定连接mysql数据库时使用utf8编码,以让mysql数据库为utf8运行)
3、重新启动mysql
service mysqld restart
(虽然此处遇到mysql服务停止失败,但是启动成功,忽略停止失败...)
4、查看数据库编码
mysql> show variables like ‘character\_set\_%‘;
PS:以前都是通过PHP的函数转化后再插入数据库中,现在觉得应该是数据库的编码方面的问题。
希望越学越顺利~