现象
-
正常开发过程中,IDEA中的日志都是正常
-
起初以为是 windows 编码问题,后来一查,说是
logback
文件没指定编码,但是我指定了 -
然后是因为用
System.out.print("中文");
打印了下,正常显示中文,所以没有怀疑是cmd编码问题,power shell开始也试了,有人说没问题,其实也乱码 -
有人说启动命令加参数:
-Dfile.encoding=UTF-8
,然而并没有用
解决方案
- 方法一:logback 中的
<charset>UTF-8</charset>
改为GBK,然后你会发现问题得以解决,but,idea中又会出现乱码 - 方法二:去掉 logback 中的
<charset>UTF-8</charset>
配置,让他跟随系统,注意不要加-Dfile.encoding=utf8参数,否则你又会入坑 - 方法三:在cmd中执行
java -jar
之前,先执行chcp 65001
,临时修改下窗口编码,保留 logback中的<charset>UTF-8</charset>
配置,然后再重启,也可以解决,当然想不想临时修改,就要去修改注册表了,这里自行百度
总结
- 总体看下来,还是logback输出的日志编码和windows cmd不一致所致
- cmd默认是gbk,logback如果没配置,就跟随系统,本来不配置 logback中的
<charset>UTF-8</charset>
配置还算正常,配置了,反而出乱码问题 - 个人建议,还是加上这个编码配置,防止在linux、docker中又出现乱码
- 至于windows cmd运行jar,本来用的就少,可以
chcp 65001
,要运行前,临时修改下即可 - 也不用去修改注册表,不是懒,而是觉得没必要动系统级的配置