问题
SpringMVC项目,采用log4j作为日志记录框架,在本地测试运行,idea的控制台,输出的文件都没有任何问题。
但是放到了服务器上之后,发现打印的日志,中文出现乱码,不是单纯的问号,而是一系列从没见过的汉字。例如:
尝试办法
于是我就开始一顿搜索,各种解决乱码的办法:
idea方面:更改idea设置,更改idea64.exe.vmoptions文件等
tomcat方面:更改server.xml,更改logging.properties等
linux方面:更改系统编码:locale等
但是都没有用
解决办法
首先要了解以下内容,不要一上来就开始咔咔咔搜索
在这里,我做个记录,若有和我一样遭遇的,可以借鉴一下
- 什么情况下会出现乱码:服务器上运行时,打印的日志会乱码
- 本地运行会不会乱码:不会
- 服务器上,输入date,会显示中文吗:会
- tomcat日志(tomcat/logs/catalina.out)会显示中文吗:会
排除掉服务器和tomcat的问题,那么就只剩下项目本身的问题了
既然本地可以运行,放到服务器就运行有问题,那就是服务器和本地的项目有差别。
后来才想起来,可能是Maven有问题
因为服务器上的项目,是用Maven打包放上去的。项目可以在本地运行,说明项目本身没有问题,那就是打包方式有问题。
在Pom.xml文件中设置打包编码为UTF-8:
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>
重新打包,上传服务器,结果就好了!!!