问题

SpringMVC项目,采用log4j作为日志记录框架,在本地测试运行,idea的控制台,输出的文件都没有任何问题。
正常idea运行

但是放到了服务器上之后,发现打印的日志,中文出现乱码,不是单纯的问号,而是一系列从没见过的汉字。例如:
乱码图片

尝试办法

于是我就开始一顿搜索,各种解决乱码的办法:
idea方面:更改idea设置,更改idea64.exe.vmoptions文件等
tomcat方面:更改server.xml,更改logging.properties等
linux方面:更改系统编码:locale等
但是都没有用

解决办法

首先要了解以下内容,不要一上来就开始咔咔咔搜索
在这里,我做个记录,若有和我一样遭遇的,可以借鉴一下

  1. 什么情况下会出现乱码:服务器上运行时,打印的日志会乱码
  2. 本地运行会不会乱码:不会
  3. 服务器上,输入date,会显示中文吗:会判断服务器是否支持中文
  4. tomcat日志(tomcat/logs/catalina.out)会显示中文吗:会判断tomcat是否支持中文
    排除掉服务器和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>

重新打包,上传服务器,结果就好了!!!
最终结果

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐