Tomcat控制台输出中文乱码

一般我们在IDE中都会将项目相关的编码内容全部设成UTF-8,因此这里不讨论项目的编码是否有问题(若不确定,可以反编译class文件在文本编辑器中查看其中中文)。

需要修改的分为两部分:windows的控制台部分和Tomcat自身日志控制部分

一、windows的控制台部分

首先你要确定你想修改所有的cmd窗口还是只修改Tomcat产生的cmd窗口。

若想修改所有cmd窗口的请看操作2,只修改tomcat的请看操作1。

(修改所有的cmd会使得在cmd内操作程序的时候某些输出内容为gbk编码的文字乱码,只修改tomcat的就不会有这个问题。)

操作1、由于使用startup.bat启动Tomcat时,它会读取catalina.bat的代码并start一个新窗口运行, 但tomcat打开的cmd默认编码不是utf-8,从而导致乱码。

解决方法

1)控制台部分:打开注册表,按路径HKEY_CURRENT_USER→Console→Tomcat(一般解压版的Tomcat在console目录下不会有Tomcat这一项,因此需要手动创建),找到CodePage项,没有则创建(注意创建的时候要DWORD32位),设置值为十进制的65001。

创建时步骤:搜索注册表 --》 进入注册表 --》进入HKEY_CURRENT_USER→Console路径下→右键Console → 新建 → 项 → 命名为Tomcat → 右键Tomcat → 新建 → DWORD (32 位) 值(D) → 命名为codePage → 右键codePage → 修改 → 选择“基数” 为 “十进制” → 数值数据改为 65001

或直接复制下面代码,保存为任意名.bat文件,直接运行。

set rr="HKCU\Console\Tomcat"
reg add %rr% /v "CodePage" /t REG_DWORD /d 0x0000fde9 /f>nul

这里推荐使用运行.bat文件方式,比较简单。

进行完上述操作后,运行startup.bat,在新弹出cmd窗口标题栏上右键,点击属性,显示如下

若当前代码页显示为65001则修改成功。

操作2、在运行中通过输入regedit进入注册表,找到

HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe,

新建一个 DWORD(32位值),命名为CodePage,值设为65001,已有CodePage的话,修改它,改为十进制,65001。

若正确修改后,cmd依然为GBK,可以试试输入命令chcp 65001。

修改后,所有的cmd窗口编码格式都是UTF-8了。

二、Tomcat自身日志部分

上述修改成功后,由于控制台编码已改为UTF-8,而Tomcat自身日志输出编码未修改,因此部分强迫症患者可能需要修改Tomcat自身日志编码。

所以一般情况分为两种,一种是使用startup.bat另一种是使用startup.sh,这里先解决startup.bat。

startup.bat------------------------

需要修改的是Tomcat的bin文件夹下的catalina.bat文件,修改位置如下图所示

在JAVA_OPTS=%JAVA_OPTS% %JSSE_OPTS%后添加

-Dfile.encoding=UTF8 -Dsun.jnu.encoding=UTF8复制代码

注意放在引号内,file.encodeing是修改文件内编码格式,sun.jnu.encoding是修改文件名编码格式。

修改完毕后弹出cmd内所有内容编码都为UTF-8,强迫症患者满意了。

startup.sh-----------------------------

.sh的窗口内编码可以直接在窗体标题栏上右键,点击options,在弹出框内修改为UTF-8。

同理对于catalina.sh的弹出框,我们需要修改的内容如下图所示:

在-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager后添加

-Dfile.encoding=UTF8 -Dsun.jnu.encoding=UTF8

------------------------------------------

其实还有一个简单的办法,

就是将start.bat中的call "%EXECUTABLE%" start %CMD_LINE_ARGS%的start换成run,这样就不用修改注册表里内容了。

因为不会弹出额外的catalina.bat窗口了。

start.sh同理。


转载于  掘金 --》王小ben
链接:https://juejin.im/post/6844903687689601032

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值