背景
intellij运行模块,控制台打印日志中文乱码。容器打印日志同样。最早未上测试环境时,本地是正常打印的。半个月前上测试环境,需要打成镜像,发现容器打印日志中文乱码。当时在网上找到解决办法,改父pom的配置,但忘记提交(因为自己只是多个模块中的一个模块的开发,动父pom这种公共的东西,没太积极提交代码),今天更新代码,把本地给冲掉了。于是今天遇到了本地运行日志乱码,clean一下再运行又正常显示中文,但过一会儿重新运行又乱码的随机现象。同时,容器不管重新打几次镜像,日志中文始终是乱码。
解决
参考http://t.zoukankan.com/slankka-p-13925687.html解决了。与我上次搜到的差不多,上次搜到的那篇改的配置更多一些,但已找不到了。如下即可解决:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
与参考链接背景不一样的是,我本地运行也是不稳定的乱码,加上上述配置后,本地百分百中文正常。容器也是。另外,我也检查过settings->file encoding,全都是UTF-8。尝试过设置servlet为UTF-8。但由于注意到运行日志中文为乱码,所以确定不是web设置原因。
感谢bf帮我定位到业务代码问题。容器打印日志有超时相关的,中文正常,超时前面几行是我的业务代码打印的中文却是乱码。可能原因,如果看完文章,因该能猜到:打印超时的代码在依赖的jar包里,可能通过aop生效的,打这个依赖jar用的编码应该是UTF-8。我的业务代码,打包设置在父pom,没有加<encoding>UTF-8</encoding>,好奇不加的话,maven是用什么编码来给我打包的。
待做
maven官网学习