Ubuntu18.04/Mysql5.7改成utf8编码
Table of Contents
##
问题背景
向MySQL插入中文内容显示问号
##
原因
Server端的MySQL不支持utf8, 部分是latin1编码格式。
mysql>show variables like "%char%";
+--------------------------------------+----------------------------+
| Variable_name | Value |
+--------------------------------------+----------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | utf8mb4 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| 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.02 sec)
##
解决办法
1、直接登录MySQL改数据库, 但是MySQL重启后,修改会失效。
2、修改MySQL配置
cd /etc/mysql/conf.d
vim mysql.cnf
2.1、在[mysql]添加 default-character-set=utf8
[mysql]
default-character-set=utf8
2.2、进入/etc/mysql/mysql.conf.d目录,打开mysql.conf.d,在[mysqld]添加一行 character-set-server=utf8,如下所示
cd /etc/mysql/mysql.conf.d
[mysqld]
#
# * Basic Settings
#
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
lc-messages-dir = /usr/share/mysql
skip-external-locking
character-set-server=utf8
#
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address = 127.0.0.1
2.3、配置成功修改后,重启MySQL服务
service mysql restart
2.4、检查编码是否修改成功
mysql>show variables like "%char%";
+--------------------------------------+----------------------------+
| Variable_name | Value |
+--------------------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8mb4 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
| validate_password_special_char_count | 1 |
+--------------------------------------+----------------------------+
9 rows in set (0.02 sec)
2.5、配置成utf8生效后,再插入中文内容就可以正常显示了。