100%解决Tomcat9/10以上版本在Windows上bat运行控制台乱码问题

在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(名称可以自己定):

BAT (Batchfile)
@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文件:

BAT (Batchfile)
@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 看下效果,控制台无乱码了,而且程序日志也正常。

海拔科技

自媒体人,喜欢网络,热爱研究。本站头条号:星河 熊掌号:海拔科技

相关推荐

Win2008R2+java环境+tomcat安装

内容适用于个版本java环境和Tomcat,安装时请根据实际情况稍作修改即可。 准备软件: jdk-7u25-windows-x64.exe apache-tomcat-7.0.42-windows-x64.zip 一、安装java 1)安装jdk-7u25-windows-x64.exe,一路next …