查看mysql当前字符集:
mysql> show variables like'%char%';
+--------------------------------------+----------------------------+
| Variable_name | Value |
+--------------------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
| validate_password_special_char_count | 1 |
+--------------------------------------+----------------------------+
9 rows in set (0.01 sec)
其中,
character_set_client 为客户端编码方式;
character_set_connection 为建立连接使用的编码;
character_set_database 数据库的编码;
character_set_results 结果集的编码;
character_set_server 数据库服务器的编码;
只要保证以上五个采用的编码方式一样,就不会出现乱码问题。
1、修改mysql的配置文件,一般是”/etc/my.cnf“。如果不确定可以按下面方法查找配置文件的位置。
which mysqld
[root@ ~]# which mysqld
/usr/sbin/mysqld
[root@ ~]# /usr/sbin/mysqld --verbose --help | grep -A 1 'Default options'
2018-03-29T02:13:30.510089Z 0 [ERROR] Can't find error-message file '/usr/share/mysql/errmsg.sys'. Check error-message file location and 'lc-messages-dir' configuration directive.
Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf
用vim修改 /etc/my.cnf
vi /etc/my.cnf

在[client]字段下添加:
default-character-set = utf8
(如果没有这字段,自己添加。)
在[mysqld]字段下添加:
character-set-server = utf8
collation-server = utf8_general_ci
2、重启mysql服务
service mysqld stop
service mysqld start
3、查看字符集编码
mysql> show variables like 'character%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.01 sec)
----------------------------------------------------------------------------------------------------------------
也可以通过命令修改mysql字符集
set character_set_client=utf8; //客户端字符集
set character_set_connection=utf8; //链接字符集
set character_set_database=utf8; //数据库字符集
set character_set_results=utf8; //结果字符集
set character_set_server=utf8; //服务器字符集
set character_set_system=utf8; //系统字符集
set collation_connection=utf8; //链接校对
set collation_database=utf8; //数据库校对
set collation_server=utf8; //服务器校对
这种方式在mysql服务重启后,需要再次设置。