我的tomcat版本是apache-tomcat-8.5.47 其他老版本不存在这个问题
解决方案:
找到Tomcat目录下的conf/logging.properties配置文件,打开第47行 java.util.logging.ConsoleHandler.encoding=UTF-8
把utf-8改成gbk
3manager.org.apache.juli.AsyncFileHandler.level = FINE
3manager.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
3manager.org.apache.juli.AsyncFileHandler.prefix = manager.
3manager.org.apache.juli.AsyncFileHandler.encoding = UTF-84host-manager.org.apache.juli.AsyncFileHandler.level = FINE
4host-manager.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
4host-manager.org.apache.juli.AsyncFileHandler.prefix = host-manager.
4host-manager.org.apache.juli.AsyncFileHandler.encoding = UTF-8java.util.logging.ConsoleHandler.level = FINE
java.util.logging.ConsoleHandler.formatter = org.apache.juli.OneLineFormatter
java.util.logging.ConsoleHandler.encoding = GBK
保存, 重启,就不乱码了,
原理分析,之所以utf-8也乱码是因为window系统的终端使用的是gbk编码, start.bat启动的就是终端,所以出现乱码
为什么老版本的tomcat没有这个问题呢, 下载老版本tomcat之后对比logging.properties配置文件, 发现老版本的没有设置编码为utf-8 , 所以不会乱码!