最近在使用IDEA时,更换了IDEA的版本为2021.2.4版本后,出现了控制台中文输出乱码的情况,如下图所示:
可以很明显的看出,英文输出正常,中文输出在控制是乱码的情况。于是常识修改编码格式,一般修改文件的编码配置:
结果依然还是不行,网上查询方法,基本上解决方法就是那几种:
1、IDEA安装的bin目录下的idea.exe.vmoptions和idea64.exe.vmoptions文件内增加-Dfile.encoding=utf-8;
2、File Encodeing配置页面设置为UTF-8,即我尝试的方法;
3、Edit Configurations的配置页面里,设置vm option为:-Dfile.encoding=utf-8;
4、Help→Etit Custom VM Options…的配置页面追加:-Dfile.encoding=UTF-8;
可以参考其他博主的帖子:IntelliJ IDEA 控制台中文乱码的四种解决方法_idea控制台输出中文乱码怎么解决-CSDN博客
经过尝试,这几种方式完全不起效果。
因为之前的IDEA是没问题的,于是怀疑是不是在配置新版IDEA时配置错误属性导致的问题,故而卸载IDEA重新安装,发现依然无法解决问题。
将之前版本的IDEA经过比对后,发现使用的jdk版本有所差异,2021.2.4版本的IDEA使用的JDK是21版本,之前版本的IDEA使用的是1.8版本的JDK。当时安装21版本jdk,是因为要使用快速创建SpringBoot项目,IDEA默认使用3.xx版本的SpringBoot,而3.xx版本的SpringBoot需要使用最低位17版本的JDK。于是将JDK版本回退到1.8版本后,发现输出正常了:
同时尝试17版本的JDK,发现也是OK的:
查询为什么21版本的JDK会出现中文输出乱码的问题,找到了如下这篇帖子:
IDEA 使用JDK21 控制台乱码 解决方案_jdk21 中文乱码-CSDN博客
发现需要在VM options配置里设置为:-Dfile.encoding=GBK,原因是:JDK18过后JDK内部默认编码格式为GBK,当项目改成UTF-8过后,JDK乱码。
于是切换回21版本的JDK后,配置VM options为-Dfile.encoding=GBK后,发现终于正常了:
如果不配置VM options为-Dfile.encoding=GBK,单文件可以使用如下代码进行设定,可以临时解决中文输出乱码问题:
try {
System.setOut(new PrintStream(System.out, true, "UTF-8"));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
不过建议还是使用配置VM options为-Dfile.encoding=GBK,或者回退JDK版本的处理方式最好。