mysql客户端查看中文乱码和emoji表情无法插入的问题

    大家好,因为最近休息不太好,心态不太好,工作上才缓过来,所以之前好久没有分享过了,照顾不周,还请谅解哈~

    最近打算每周把工作和自己在网站制作中的问题做专题总结,所以决定以后会大概每周一篇的频率来分享,最近在做一个按照一定周期复习自己录入的题目的网站,在初期遇到了mysql客户端查询时,中文乱码的问题,于是这周来总结一下。

问题出现的原因总共有这几类:

1.server本身设定问题,例如还停留在latin1

2.table的语系设定问题(包含character与collation)

3.客户端程式(例如php)的连线语系设定问题

只有5.5.3以后的mysql才支持utf8mb4,所以先确认你的mysql的版本是否支持。

命令:select version();

mysql客户端查看中文乱码和emoji表情无法插入的问题
下面第一项,其实我是分隔符,喵喵~

一、server本身设定问题:

1.首先看server本身的设定问题:

show variables like’%char%’;

客户端中输入命令会产生如下图所示的配置:

mysql客户端查看中文乱码和emoji表情无法插入的问题

为了存储汉字时不发生乱码,以及存储emoji表情,除了charact_set_filesystem都要改成utf8mb4,命令如下:

set character_set_system=utf8mb4;

之后通过show variables like “%colla%”命令来查看collation的编码,如果不是utf8mb4_general_ci,通过命令:

set collation_connection = utf8mb4_general_ci;

换成utf8mb4_general_ci。

mysql客户端查看中文乱码和emoji表情无法插入的问题

如果想要mysql服务器重启时使配置仍然生效,可以改配置文件,在/etc/mysql/my.cnf文件的对应节点添加一下信息:

[client]

default-character-set=utf8mb4

[mysqld]

default-character-set=utf8mb4

[mysql]

default-character-set=utf8mb4

mysql客户端查看中文乱码和emoji表情无法插入的问题
前面中间的大黑,摆个pose.....

二、table的语系设定问题:

检查数据库的character set:

show create database question;

mysql客户端查看中文乱码和emoji表情无法插入的问题

如果不是utf8mb4,将其改为utf8mb4,命令如下:

ALTER DATABASE `question` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

设置数据表的默认编码为utf8mb4:

ALTER TABLE `question` DEFAULT CHARACTER SET utf8mb4 COLLATE 

utf8mb4_general_ci;

设置数据表的指定字段为utf8mb4:

ALTER TABLE `question` CHANGE COLUMN `name` `name` varchar(12) 

CHARACTER SET utf8mb4;

mysql客户端查看中文乱码和emoji表情无法插入的问题
那年花开,哪知此景竟只能追忆.....

三、php连接语系设定语句:

在执行mysql请求之前运行如下命令:

mysql_query("set character set ‘utf8mb4"");//读库 

mysql_query("set names ‘utf8mb4"");//写库