很早之前就遇到了IDEA 和 cmd命令行里 Tomcat 日志中文乱码问题,但是 Tomcat log目录下的 catalina.log 文件却不是乱码,因为各种缘由没有及时去解决,这次做项目用到了 Activiti 工作流,学习过程中,遇到了 bpmn 流程图中文乱码问题,一并解决了这个问题,这里做个简记,防止下次踩坑。
IDEA 启动文件配置
Google 得知,修改 IDEA bin 目录下 idea64.exe.vmoptions 文件,添加参数 -Dfile.encoding=UTF-8,即可解决问题,如下:
但是重启 IDEA 后发现,bpmn 还是有中文乱码,修改 IDEA 中的 File Encodings ,如下:
最终还是无果,想起了之前遇到 Tomcat 在 IDEA 里中文日志乱码问题时,也配置了这个 -Dfile.encoding=UTF-8 参数,结果也是无效,应该是同个问题。
使用 JvisualVM 分析问题
打开 jvisualvm 查看 jvm 的运行情况,如下图:
发现 IDEA 启动时 -Dfile.encoding 参数还是 GBK,初步分析,在 IDEA bin 目录下 idea64.exe.vmoptions 文件中的 -Dfile.encoding=UTF-8 应该是被覆盖了,查阅了一下资料得知,在用户目录下,在 C:\Users\用户名.IntelliJIdea2019.3\config 目录下的 idea64.exe.vmoptions 文件将会覆盖 IDEA bin 目录下的 idea64.exe.vmoptions 配置文件参数,打开用户目录下的 idea64.exe.vmoptions:
和预想的一致,-Dfile.encoding=GBK,这个的问题也就类似于全局系统变量会被用户级变量覆盖一样,只需要改好用户级别的配置即可。所以修改了用户目录下的 IDEA 启动配置文件,改为 -Dfile.encoding=UTF-8,重启 IDEA ,配置生效,中文乱码问题得以解决。
CMD 启动 Tomcat 中文日志乱码解决
CMD 命令中启动 Tomcat,也发现造成了中文乱码,但是 Tomcat log 目录下的 catalina.log 文件却不是乱码,应该也是因为 Win 10 默认 CMD 窗口使用的不是 UTF-8 编码,只要设置成 UTF-8 即可。配置如下:
使用 chcp 65001 命令可让本次打开的 cmd 窗口使用 UTF-8 编码,但是下次打开还是恢复默认的编码,永久配置需要修改注册表;
win + r ,输入 regedit ,找到 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor ,添加如下配置:
重新打开 CMD ,启动 Tomcat ,中文乱码得以解决。
网友评论