开篇直接步入正题,演示乱码:
一个简单的测试方法+允许环境+文件编码
这是运行结果:乱码。
解决方案如下:只要把Project Encoding 改为GBK就能解决问题(其他不用改)。
看到这里我相信很多小伙伴就能解决问题了,下面谈一下我对这个系统打印的理解。希望能够帮助大家(新人勿喷。)
先谈一下jdk17:
我用这个测试类测试过,他无论是用utf-8还是使用gbk都不会产生乱码,于是我尝试观察源码有如下发现:
1.通过查阅源码,我发现最后对于打印的实现是通过charout实现的,
2.初始化时,如果你没有传入具体的字符集名称,他会加载一个默认的字符集。
3.而默认字符集的加载它回去加载系统配置的file.encoding,没有的话就是utf-8
所以我们就能够发现他不出乱码的原因了,解码和编码一致就不会产生乱码。
然后我们看一下jdk18:
他并不是直接使用系统的默认字符集,然后呢即使file.encoding=utf-8,而charset却是GBK
然后就导致乱码。这就是我的见解,欢迎大家交流。