一. 问题背景
以双击运行 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的方法。
但是我遇到的情况是
- 我希望从startup.bat启动
- 希望窗口可以显示utf-8,因为不仅是tomcat输出的中文是utf8,我的程序中也将会输出utf8
所以只能是想办法修改运行时,新建的窗口的默认编码。
四、解决方案
- 打开注册表
- 找到HKEY_CURRENT_USER→Console→Tomcat(没有的话就添加。右键 >> 新建 >> 项。如果你改了tomcat的标题栏,这里就是你打开的命令窗口的名字)
- 找到CodePage项,没有则新建(DWORD),更改值为65001、基数为十进制,点击确定。
结果图如下:
五、结果验证
这时候在启动startup.bat就不在乱码了,并且控制台窗口的属性页改为UTF-8了。
六、总结
不确定该注册表意味着什么,日后需要再研究一下
参考: https://blog.csdn.net/zhaoxny/article/details/79926333
标签:编码,bat,Tomcat,tomcat,startup,GBK,乱码 From: https://www.cnblogs.com/lyphy/p/16806768.html