【8002】解决IntelliJ IDEA控制台输出中文乱码问题

问题背景:(首先声明一下我的JDK是18)


解决IntelliJ IDEA控制台输出中文乱码问题:System.out.println(“你好”);这种语句进行输出时,然而控制台却输出的是:
在这里插入图片描述


解决方案:


我上网查了很多很多信息,搞了好几个小时才搞好,所有的方法都试过了结果还是没成功,还是最后
我换了jdk版本17(我下载的是最新版本的JDK18)后问题才得以解决,无奈的办法!因此不妨先试试换jdk17、11、8版本或者更稳定的版本(版本默认编码格式的问题),太浪费时间了,对于小白实在是流泪啊:
方法1
直接暴力方法更换JDK17版本(因为我成功了,我也查了一些资料,底下有对JDK18问题的原因解释),最新版本不确定因素的原因,以前的方法并不适用:这里是安装JDK17的网址:
https://blog.csdn.net/qq_44866828/article/details/120301797


安装好后需要切换一下JDK编译语言环境,一般idea会自动连接到你下载的JDK,如果没有连上,或者你下了二个以上的JDK,又或者你可以通过idea下载你想要的JDK版本(记住下载路径),那么就要了解如何切换JDK了。


方法一方案第一步:(File–>Project Structure–>(如果当前idea运行的版本是你安装的JDK,后面不用执行)–>ADD JDK…–>OK–>apply);
具体步骤:
打开idea,点击File,然后点击Project Structure,再点击SDK,查看当前idea运行的版本是不是你安装的JDK路径,确保idea中连接的JDK能正常编译使用:如果没有点击+号,找到你安装jDK的那个文件夹即可,最后点击apply;并且记住你起JDK的Name为后面选择使用;


在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


3.方法一方案第二步:(project–>project SDK–>Project Language level–>apply)
选中project,点击project SDK:的jdk改为你安装的版本,并将下方的
Project Language level的语言版本该为和你jdk匹配的语言版本:我选的特性是:8-Lambdas, type annotations etc;,最后点击apply;
原因:
确保模块配置特定于模块的SDK与项目的语言级别相匹配,比如我的是SDK是JDK18版本的,那么我对应的语言级别特性就可以选择是:8-Lambdas, type annotations etc.。
但我选择默认特性情况也没有报错,X - Experimental features,X - Experimental features.。

另外关于JDK版本问题:有兴趣可以去搜索一些资料,大致是则在 Java1到 Java9 对应每一个版本号 :JDK1.0、JDK1.2 … JDK1.8、JDK1.9,Java10以后JDK对应名称为:JDk10、JDK11、JDK12。


在这里插入图片描述


方法2:
找到intellij idea的file–>settings–>Editor–>FileEncodings的GlobalEncoding和ProjectEncoding、Project Encoding和Default encoding for properties都配置成UTF-8:(Apply->OK)


在这里插入图片描述


方法3:
首先需要找到intellij idea安装目录,bin文件夹下面idea64.exe.vmoptions和idea.exe.vmoptions这两个文件,分别在这两个文件末尾中添加:
-Dfile.encoding=UTF-8—>这个方法是改变idea底层运行代码了,需要关闭重启:


在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


方法4:.打开tomcat配置页面,点击Edit Configurations在部署Tomcat的VM options项中添加:
-Dfile.encoding=UTF-8,点击Apply应用,重启Intellij idea即可(如果没用到tomacat,这一步不需要设置这个方法)


在这里插入图片描述


对于Tomacat中的乱码问题如果还是不行:
1.打开到Tomact安装目录下的conf/文件夹修改logging.properties文件
2.将java.util.logging.ConsoleHandler.encoding=GBK修改为:
java.util.logging.ConsoleHandler.encoding=UTF-8;(如果用的是GBK,就把所有要改的地方换成GBK,看解析!)
3.再次重启


原因分析(知道原理):


1.新的JDK18字符集默认是UTF-8,而原先是GBK,GBK可以用UTF-8解析(有些可以,不是全部),但UTF-8却不可以解释GBK会出现乱码;即要么全是相同编码格式(推荐),要么GBK解析(此时的UTF-8编码的二进制都能符合GBK的编码规则才可)(这是乱码的根本原因);
2。当我们全改为UTF-8(此时的UTF-8编码的二进制都能符合GBK的编码规则),控制台是GBK,控制台就用GBK方式解析UTF-8,就不会出现报错,但是如果控制台是UTF-8,去解析GBK格式的代码就会报错,这也是JDK18新版本的问题。
3.解决方法也可以把File encoding的地方全部变成GBK或者(MacRoman(英文系统下的情况)),也可以正常输出了。
4.而对于以前的老版本的JDK就要用方法2,3即可解决;
5.如果对GBK和UTF-8的原理很感兴趣,可以点击这里网址深入了解哦,嘿嘿:
https://blog.csdn.net/hskw444273663/article/details/87881164


注意底下的控制台编码方式:


在这里插入图片描述

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值