在Windows系统中,如果我们使用Tomcat9及Tomcat10以上的版本,如果用startup.sh 运行程序,控制台输出会有乱码。
在网上查了很多资料,包括修改Tomcat->conf->logging.properties 文件的编码,只能解决Tomcat自身的中文输出乱码问题,像我这种Tomcat乱码解决了,但是程序日志输出还想用utf8,在控制台看程序打印日志还是乱码。
通过不停的尝试,最终通过改变运行脚本的编码解决了该问题,以下为过程记录。
本次处理问题,涉及两个新增脚本(如果你本地已经有setenv.sh可以按照提供的新格式追加相关内容就可)
以下内容以Tomcat在D:\Soft\app\apache-tomcat-9.0.113路径为例子。
在 Tomcat 的 bin 目录:D:\Soft\app\apache-tomcat-9.0.113\bin 下新增一个bat文件new_startup.bat(名称可以自己定):
@echo off
rem 切换控制台编码为 UTF-8(65001),抑制输出
chcp 65001 >nul
rem 可选:设置 JVM 默认编码为 UTF-8(更可靠)
rem 这里把 -Dfile.encoding 加到 CATALINA_OPTS(或 JAVA_OPTS)
set "CATALINA_OPTS=-Dfile.encoding=UTF-8 %CATALINA_OPTS%"
rem 调用原来的 catalina.bat(确保使用 call 以便返回)
call "%~dp0catalina.bat" run新增或修改 setenv.sh文件:
@echo off
rem 你原来的配置
rem 设置 JVM 默认编码为 UTF-8(推荐)
set "JAVA_OPTS=-Dfile.encoding=UTF-8 %JAVA_OPTS%"
rem 你原来的配置
rem 你原来的配置增加 set "JAVA_OPTS=-Dfile.encoding=UTF-8 %JAVA_OPTS%" 这代代码时,如果你的setenv本来就有 JAVA_OPTS = ………… 建议追加到原内容后面,不要在重复设置 JAVA_OPTS。
修改完毕,运行 new_startup.bat 看下效果,控制台无乱码了,而且程序日志也正常。
