今天做实验,迷之乱码。项目结构:Spring+Mybaits,同时用了log4j。但是tomcat控制台总是乱码。
项目编码、文件本身编码都是UTF8,我之前使用IDEA也没出现过类似问题,这次却耽误了我好长时间= =
把IDEA编译的class文件反编译,发现已经是乱码了,所以给javac附加UTF-8参数,之后依然乱码。
网上有人在运行tomcat时候传入UTF-8我也试了,依然不行。log4j也设置了UTF-8。
经过实验,发现有一次控制台是乱码但是输出的日志文件不是乱码,才把注意力转向了IDEA自身
最后发现居然是IDEA自身编码没改,解决方案如下
打开IDEA安装目录找到idea64.exe.vmoptions加入一行-Dfile.encoding=UTF-8
即可
总结下,有这么几个位置
源文件自身编码
项目编码
javac编译时候的编码参数
tomcat运行时jvm的编码参数
IDEA运行时jvm的编码参数
log4j配置的输出编码
均统一为UTF-8后问题消失
遗留的玄学问题:为什么反编译class文件时候,出现过一次部分文件编码异常而部分文件编码正常的情况=-=
0 Comments