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


    • 环境

        • 电脑系统:win10

        • tomcat版本:apache-tomcat-8.5.38

      解决方法:

      需要在\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窗口的编码为UTF-8。

      方法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会发现不再有乱码出现了。

      另外,需要注意tomcat窗口的字体如果是默认的“点阵字体”,则UTF-8编码的中文不能正常显示,需要修改字体为Consolas


      转自

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

posted @ 2020-11-26 20:47  wangweizhe  阅读(413)  评论(0)    收藏  举报