一. 问题背景

以双击运行 tomcat目录下 startup.bat 的方式启动tomcat程序。

 控制台输出的中文提示信息都是乱码

 

 

二、问题原因

windows默认编码集为GBK,由于使用startup.bat启动tomcat时,它会读取catalina.bat的代码并打开一个新窗口运行。这个新窗口的编码格式是windows默认编码集为GBK。

而tomcat输出的格式是UTF8的,程序输出与窗口解析的编码不一致,所以导致乱码。

窗口的编码格式可以通过在窗口左上角图标上 >> 右键“属性” >> 查看当前代码页,进行查看,如图: 

(注:65001为UTF-8, 936为GBK)

 

 

三、解决思路

关于编码不匹配导致的乱码,相关的配置位置有很多,包括 context.xml,server.xml,logging.properties,IDEA上的配置,还有java虚拟机参数(-Dfile.encoding=UTF-8)等

其中最简单的方式就是将tomcat的日志输出改为GBK来适应窗口的编码(logging.properties的方式),网上大多数都是这种统一为GBK的方法。

但是我遇到的情况是

  1. 我希望从startup.bat启动
  2. 希望窗口可以显示utf-8,因为不仅是tomcat输出的中文是utf8,我的程序中也将会输出utf8

所以只能是想办法修改运行时,新建的窗口的默认编码。

四、解决方案

  1. 打开注册表
  2. 找到HKEY_CURRENT_USER→Console→Tomcat(没有的话就添加。右键 >> 新建 >> 项。如果你改了tomcat的标题栏,这里就是你打开的命令窗口的名字)
  3. 找到CodePage项,没有则新建(DWORD),更改值为65001、基数为十进制,点击确定。

结果图如下:

 

 

 

五、结果验证

这时候在启动startup.bat就不在乱码了,并且控制台窗口的属性页改为UTF-8了。

 

 

 

六、总结

不确定该注册表意味着什么,日后需要再研究一下

 

 

 

 

参考: https://blog.csdn.net/zhaoxny/article/details/79926333

 

posted on 2022-10-19 16:24  Lyphy  阅读(2789)  评论(6)    收藏  举报