1.问题
Ubuntu16.04下搭建了Java开发环境和MySQL数据库。点击这儿学习搭建
在做项目时,通过JDBC插入到数据库中的中文数据显示乱码,具体方式是???的形式。经过排查,排除代码问题,考虑MySQL数据库本身问题。
2.排查MySQL编码
登录MySQL,查看编码:
show variables like 'char%' ;
其中,红色箭头所指的两个地方并不是utf8编码,所以要修改。
3.解决办法-百度的误区
在百度搜了一下,千篇一律的解决办法是:需要在/etc/mysql/my.cnf
里面的[mysqld]
字段下添加character_set_server=utf8
,但是打开这个文件,如下图所示,除了两句话之外,什么都没有,更不用说字段。
于是,自己在这里面手动写入了字段:
[mysqld]
character_set_server=utf8
结果直接导致MySQL启动失败,于是果断放弃了这种方法。
4.真正的解决办法
在谷歌搜了一些找到了正确的解决办法:需要在/etc/mysql/mysql.conf.d/mysqld.cnf
文件里找到[mysqld]字段,然后添加character_set_server=utf8
。
提醒: 在修改mysqld.cnf文件前,需要关闭mysql服务:
sudo service mysql stop
或者sudo /etc/init.d/mysql stop
修改完成后,启动MySQL。登录MySQL,查看编码:
完成了编码的修改。 接着用JDBC进行测试,发现中文乱码问题不复存在。
很简单的东西啰里啰嗦了半天,就是希望提醒大家,谷歌确实好用!