Tomcat日志乱码全解决方案

  • 1.出现乱码
  • 2.解决方案
  • 方案一、 直接修改Tomcat日志输出字符集
  • 方案二、 修改IDEA启动VM参数字符集


1.出现乱码

最近一直在用Springboot,很少再直接使用Tomcat启动服务器,昨天接手了一个项目,当我需要在本地调试的时候,我首先去手动下载了一个Tomcat,在IDEA中配置运行以后,打印日志出现了乱码的情况:

Android 日志中文乱码 日志乱码怎么解决_java

2.解决方案

方案一、 直接修改Tomcat日志输出字符集

看到这熟悉的中文字符乱码,想都不用想,肯定是因为坑爹的Windows平台上的GBK编码和输出的UTF8编码的字符串出现了冲突,根据以往踩坑的经验,我就直接找到了Tomcat目录下的配置文件夹:

Android 日志中文乱码 日志乱码怎么解决_Android 日志中文乱码_02


看到了熟悉的logging配置文件,打开以后果不其然,日志的输出全部是UTF8编码,这里需要给小伙伴普及一个知识,Windows下的CMD的默认字符集是GBK,所以UTF8编码输出的日志,中文看到的肯定是乱码了。

Android 日志中文乱码 日志乱码怎么解决_intellij idea_03


前面几个都是文件日志,我们不用关心,只需要修改最后一个输出到console的字符串编码:java.util.logging.ConsoleHandler.encoding = GBK

Android 日志中文乱码 日志乱码怎么解决_intellij idea_04


重启Tomcat以后发现中文乱码情况已经解决了。

Android 日志中文乱码 日志乱码怎么解决_tomcat_05

方案二、 修改IDEA启动VM参数字符集

这种方式是我在stackoverflow上看有大神的解决方案,不需要修改Tomcat日志的编码,直接修改IDEA启动时JVM的参数,添加:

-Dfile.encoding=UTF-8

然后重启IDEA

Android 日志中文乱码 日志乱码怎么解决_java_06


可以看到这样也是能解决问题的,我推测是因为IDEA默认启动的JVM参数指定的是GBK,因此导致了控制台也不能正常显示UTF8编码的字符集,这样修改以后就可以支持了。

Android 日志中文乱码 日志乱码怎么解决_java_07