2. 客户端端字符集 对应查看命令: show variables like '%chara%'; 或者 show session variables like '%chara%';
客户端和服务端数据交换的数据流,如下:
向数据库中插入:client→connection→server
从数据库中查询:server→connection→results
以上图为例,发现服务器端的字符集已经全部变成了utf8,而客户端字符集中,“character_set_client”、“character_set_connection”、“character_set_results”的值还是latin1 ,
server里utf8的数据,传入connection转为latin1,再传入results转为latin1,utf8页面又把results转过来。而latin1和utf8两种字符集并不兼容,这样在客户端显示的查询结果中如果有中文就会显示乱码。
这就是为什么数据库中的数据明明是utf8字符集,在客户端中显示却是乱码的原因。
设置mysql默认字符集的办法:
修改 mysql 配置文件实现
① Linux服务器
# vi /etc/my.cnf
mysql 5.5版本以下这样修改
[client]
default-character-set=utf8
[mysqld]
default-character-set=utf8
mysql 5.5版本,及以上版本改为:
[client]
default-character-set = utf8
[mysqld]
character-set-server = utf8
修改好配置文件后,重启mysql服务使修改生效
# service mysqld restart
②Windows服务器
在mysql的安装目录中,修改 my.ini 这个mysql的配置文件
mysql 5.5版本以下这样修改
[client]
default-character-set=utf8
[mysqld]
default-character-set=utf8
mysql 5.5版本,及以上版本改为:
[client]
default-character-set = utf8
[mysqld]
character-set-server = utf8
修改好配置文件后,重启mysql服务使修改生效。
windows下的mysql服务一般在服务管理器中重启,cmd命令行中输入 services.msc
回车后会填出服务管理器,找到mysql相关服务,右键重启。