首页 > Windows开发 > 详细

解决windows tomcat控制台中文乱码问题

时间:2019-11-14 12:24:54      阅读:88      评论:0      收藏:0      [点我收藏+]

 公司的应用部署在windows server服务器上面。一般应用报错会到服务器查看tomcat控制台报错信息,但是tomcat中文总是乱码影响查看。于是就尝试在自己电脑(win10)上解决tomcat中文乱码,在网上找了很多资料尝试了几种之后总算把问题解决了。

环境

  • 电脑系统:win10
  • tomcat版本:apache-tomcat-8.5.38

解决思路

乱码问题根本原因是编码不一致。

找到tomcat目录下apache-tomcat-8.5.38\conf\logging.properties文件,可以看到tomcat输出到控制台的日志信息是UTF-8编码的。

 技术分享图片

而 window控制台默认编码包括Tomcat控制台编码默认是GBK编码的

技术分享图片

 所以,我们需要把两者的编码设为一致

解决方法

方法1:

修改logging.properties文件,把所有UTF-8的配置项修改为GBK,或者注释掉。

存在的问题:

技术分享图片

 

 我的springboot项目跑不起来了?

原因是项目中文件编码是utf-8编码,而windows的jvm默认编码是GBK,所以项目就跑不起来了。

技术分享图片

解决方法:

需要在\apache-tomcat-8.5.38\bin\caalina.bat文件中增加配置 -Dfile.encoding=UTF-8

 -Dfile.encoding=UTF-8的作用

在命令行中输入 java,在给出的提示中会出现 -D 的说明:
-D= # set a system property
-D 后面需要跟一个键值对,作用是设置一项系统属性
对 -Dfile.encoding=UTF-8 来说就是设置系统属性 file.encoding 为 UTF-8
那么 file.encoding 什么意思?字面意思为文件编码。
搜索 java 源码,只能找到 4 个文件中包含 file.encoding 的文件,
也就是说,只有四个文件调用了 file.encoding 这个属性。
在 java.nio.charset 包中的 Charset.java 中,这段话的意思说的很明确了。
简单说就是默认字符集是在 java 虚拟机启动时决定的,
依赖于 java 虚拟机所在的操作系统的区域以及字符集。
代码中可以看到,默认字符集就是从 file.encoding 这个属性中获取的。

 那么添加这个配置之后,再次启动Tomcat。注意到再次出现乱码,分析乱码原因是项目中的日志输出的中文采用的是UTF-8编码,而Tomcat日志输出采用的是GBK编码,编码不一致造成乱码。

技术分享图片

那么,要想解决需要修改Tomcat输出日志采用的编码也就是在logging.properties文件中配置编码为UTF-8,也就是恢复该文件的原始配置。然后会发现输出的编码UTF-8跟Tomcat窗口编码GBK又不一致,于是最终的解决方案应该是修改Tomcat窗口的编码为GBK。

方法2:

从方法1可以知道,如果项目中文件编码采用UTF-8编码,为了使项目中的日志信息不乱码最终的解决方案是让Tomcat窗口的编码为UTF-8。

  • 修改注册表,让Tomcat窗口编码为UTF-8
  • Win+R快捷键打开“运行”窗口
  • 输入“regedit”打开注册表
  • 找到HKEY_CURRENT_USER\Console\Tomcat,如果没有Tomcat就新建一个

技术分享图片

  •  选中Tomcat新建DWORD(32位),名称是CodePage,数值选择十进制输入65001(这个是UTF-8对应的值)

技术分享图片

技术分享图片

修改注册表完成后,再次打开Tomcat会发现不再有乱码出现了。

参考

https://my.oschina.net/lixuelong/blog/3024957

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

解决windows tomcat控制台中文乱码问题

原文:https://www.cnblogs.com/ununie/p/11855869.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!