mysql 5.7中文乱码的解决

环境:ubuntu 16+mysql 5.7+java 8+servlet 3.1

乱码:写入数据从控制台上看是正确的,但写入后再读出来就是?了。

那么肯定就是字符集的问题了。

先看看现在的设置值:在mysql里查询下

show variables like ‘%char%’;

会出来一堆,大部分是utf8,但其中:

character-set-server=latin1

character-set-databases=latin1

很显然,就是这儿。

先在mysql下尝试了用这个:

set character-set-server=utf8

set character-set-database=utf8

但是服务重启后就变回去了,所以看来只能修改配置文件。


mysql 5.7 刚刚安装好后,配置文件是 /etc/mysql/mysql.conf.d/mysqld.cnf,而且并没有my.cnf这个文件。似乎以前版本的mysql,安装后的配置文件都是/etc/mysql/my.cnf

打开/etc/mysql/mysql.conf.d/mysqld.cnf,发现第一句话就是:可以把这个拷贝成/etc/mysql/my.cnf

好,直接来:

cp /etc/mysql/mysql.conf.d/mysqld.cnf /etc/mysql/my.cnf

然后打开my.cnf,添上:

[client]

default-character-set=utf8

在[mysqld]这段里面,添上

character-set-server=utf8

保存,并重启mysql服务,就行了。

你可能感兴趣的:(技术)