背景
在本地idea中中文不乱码,但是到了linux服务器上乱码了(插入操作)。
排查
查看数据库jdbc的编码
没有问题
查看linux服务器的编码
locale
没有问题
需注意的是:如果默认语言是en_US.UTF-8,在Linux的字符和图形界面下都是无法显示和输入中文的。如果默认语言是中文,比如zh_CN.GB18030 或者zh_CN.gb2312,字符界面无法显示和输入,图形界面可以。
所以这里的zh_CN.UTR-8是正确的
https://www.cnblogs.com/saneri/p/5779119.html
查看mysql服务器编码
/etc/mysql/my.cnf
然后打开my.cnf,添上:
[client]
default-character-set=utf8
在[mysqld]这段里面,添上
character-set-server=utf8
保存,并重启mysql服务,就行了。
重启命令 service mysql restart
以上来自:https://blog.csdn.net/anod/article/details/77876974
通过show variables like ‘character%’ ; 查看字符集,
SET character_set_database = utf8;
SET character_set_server = utf8;之后重启删掉库表,新建库表
以上来自:https://blog.csdn.net/zl834205311/article/details/81703560
通过查看还是没有问题的
万万没想到
仔细想想,本地没有问题,移到linux就有问题,不可能是mysql服务器的问题,只可能是linux服务器的编码问题,可是经过排查是没有问题的,那么~~~ 通过打开打完的war包,查看class文件
呆若木鸡,打包就打错了,存库里面能不乱吗me?睿智
最终解决
maven中加入utf-8的plugin
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.2</version>
<configuration>
<encoding>UTF-8</encoding>
</configuration>
</plugin>