IDEA编码问题(权威发布)

本文详细解释了JDK18后从UTF-8变为GBK导致的乱码问题,介绍了如何在IDEA中设置全局、项目和控制台编码,以及如何在运行时指定编码以避免乱码。建议项目使用UTF-8,控制台默认GBK,并在必要时通过-Dfile.encoding调整。
摘要由CSDN通过智能技术生成

重点:JDK18之前是UTF8编码所以能用UTF8,JDK18之后成了GBK所以用UTF8有乱码

重点:JDK18之前是UTF8编码所以能用UTF8,JDK18之后成了GBK所以用UTF8有乱码

重点:JDK18之前是UTF8编码所以能用UTF8,JDK18之后成了GBK所以用UTF8有乱码

乱码对照表

f236f9c70ce548df8c0b2fc80583092a.jpeg

相关文档:JEP 400:默认为 UTF-8 (openjdk.org)

很多人在用idea时总是遇到控制台输出乱码

对于idea编码问题网上都是,动不动UTF-8,其实都没有涉及到问题的本质,下面从头理一遍

1.设置编码

打开设置后这里面由三个能改编码的地方,分别是全局编码,项目编码和属性文件编码,我们都设置成UTF-8

dac08cd9140e4c96a6f0e2f82b5f09bd.png

第二个就是控制台编码,我们也改成UTF8

0415f0e4685c4fe69cecaba9a24136c7.png

2.开始分析

用例1: 文件编码UTF-8 设置控制台UTF-8

然后新建一个HelloWorld类输出一下汉字看看,可以看到当前用的编码是UTF-8,输出了一些奇怪的符号数量是8个,我们输入的字符是6个

81927e533a754b85b3493db3ac110789.png

下面用表格展示

用例分析报告
用例编号全局编码项目编码输出的编码控制台编码用例输出
1UTF8UTF8UTF8UTF8乱码1
2UTF8UTF8UTF8GBK正常
3UTF8GBKGBKUTF8乱码1
4UTF8GBKGBKGBK乱码2
5GBKUTF8UTF8UTF8乱码1
6GBKUTF8UTF8GBK乱码1
7GBKGBKGBKUTF8正常
8GBKGBKGBKGBK正常
正常:你好,世界!
乱码1:��ã����磡
乱码2:浣犲ソ锛屼笘鐣岋紒
乱码3:???????磡

3.得出结论

  1. 文件的编码只受项目编码的影响,且和项目编码一样

4.针对错误结果二次测试

打开运行配置,我们用-Dfile.encoding在运行的时候指定编码(图中标红的地方都能打开)

f5e05d3287b347aeb366250885461f55.png

e771951ea837462596f8e3e5259737ea.png

测试半天基本等于白测

最终结论

IDEA编码的水太深,不是你我能把握的住的,当我们写项目的时候按我说直接设置成UTF8然后控制台默认GBK,每次运行在vm中加上-Dfile.encoding=GBK

上面都是初步分析,java虚拟机确定编码是在执行阶段,所以测试结果很有可能不一样,分析源码请看:

关于jdk18乱码问题详解_yw zs的博客-CSDN博客

如果用的18以上JDK还希望文件编码是UTF8可以按照途中步骤配置好虚拟机,生成class的时候用GBK,这样给显示正常,同时保证源码能分享

fee8a18aa2fe4e63b2e3fdc9a83ab9c7.png

 

  • 13
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值