IDEA + Tomcat 8.5中文乱码解决过程
说明
本文讲述的博主遇到的乱码问题比较怪异(可以说是四年开发生涯中最难搞的一个,前前后后浪费折腾不下4~5小时),很可能并不能解决你的问题,但是给出的经验很重要,或许可以给你一些启发。
大佬勿喷。
问题
即现象:
- HTML页面中文乱码;
- IDEA console部分乱码,具体说来:
20-Sep-2020 18:36:55.802 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Server.服务器版本: Apache Tomcat/8.5.55
2020-09-20 18:37:16.217 [http-nio-8080-exec-9] ERROR org.ppdai.security.service.LocalSecurityFilter - 涓嶅簲璇ヨ繘鏉ョ殑 not welcome sessionId:wangjian14_1600595004182_1158a28c-dbca-4a2d-bd7c-796f812b4ca5 ,res={"success":false,"key":"wangjian14_1600595004182_1158a28c-dbca-4a2d-bd7c-796f812b4ca5"}
即,tomcat的启动日志正常,但是应用日志的中文乱码。
解决
HTML页面中文乱码
首先贴出我的Chrome版本号:
一开始也是各种瞎搜索,乱折腾……无外乎网上那些方案。
但是
尝试过各种不同的解决方案之后,始终解决不了我的问题(当然是在瞎鸡巴尝试过程,即浪费时间的过程中得到的结论):
- 只有我有这个问题,其他同事都是正常;
- 发现IE以及Firefox浏览器正常,只有Chrome有乱码问题;
- 只有首页乱码,Chrome登录进去之后,其他有中文字符的页面全部正常,没有乱码问题;
至此,不再相信网上各种乱七八糟的解决方案,都是在浪费时间,和自己遇到的问题并不完全一致。
定位到问题是Chrome之后,Google(也试过百度)搜索:更改Chrome浏览器编码设置,选择时间为近一年,又是千篇一律的抄来抄去的解决方案,安装插件charset(chrome app市场搜索关键词),尝试的插件包括但不限于:
- Webpage Default Encoding Changer
- charset
- 网页编码修改(Charset)
依旧还是不能解决我的问题。
并没有解决问题,只是绕过问题:使用Firefox
IDEA console部分乱码
修改IDEA文件idea64.exe.vmoptions
末尾添加一行:-Dfile.encoding=UTF-8
保存并重启IDEA,现象:
20-Sep-2020 18:26:39.815 ��Ϣ [main] org.apache.catalina.startup.VersionLoggerListener.log Server.�������汾: Apache Tomcat/8.5.55
2020-09-20 18:27:00.939 [http-nio-8080-exec-6] ERROR org.ppdai.security.service.LocalSecurityFilter - 不应该进来的 not welcome sessionId:wangjian14_1600595004182_1158a28c-dbca-4a2d-bd7c-796f812b4ca5 ,res={"success":false,"key":"wangjian14_1600595004182_1158a28c-dbca-4a2d-bd7c-796f812b4ca5"}
即,虽然能够解决应用日志的中文乱码问题,但是tomcat的启动日志中文乱码。
不过,console里面的Tomcat启动日志乱码也无关紧要,保证应用日志正常即可。
时间和精力原因,不再继续研究两个并未解决完全的问题(只是绕过问题)。
经验
- 需要区分到底是IDEA console乱码还是HTML文件乱码;
- 只有自己有这个问题,还是其他人都有这个问题;
- 如果安装有STS(spring tool suite),可以考虑换STS看看是不是也有乱码问题;
- 针对HTML乱码,第一步考虑换用浏览器,看是不是普遍的问题,即其他浏览器也有乱码问题,如果是的,说明大概率是HTML页面编码问题;如果不是,则是浏览器的编码问题;
- 针对IDEA console乱码问题,需要确定是Tomcat启动日志乱码还是应用记录日志乱码;
- 理论上,如果是Tomcat启动日志乱码,需要更改Tomcat编码设置;相应的,如果是应用记录日志乱码,则需要更改IDEA的编码设置;
- 很特殊的,我遇到的IDEA console乱码问题,分两部分:Tomcat正常,但是应用记录日志乱码。更改
idea64.exe.vmoptions
配置文件之后,应用记录日志正常,但是Tomcat又乱码了。此时我又尝试去设置Tomcat编码,但是依然没有解决Tomcat乱码问题,不过我已经忽略了。 - 时间值不值得浪费在这个上面,即是否必须要解决(当然指的是比如我这种几小时还搞不定的case)。