java println 编码_System.out.println的编码问题

源文件格式UTF8, System.out.println( "Hello World!天" ); 在cmd中显示汉字的编码过程 ? 我没找到一个说法,可以解释下面四个试验。

(试验1.chcp936,环境变量设utf8)E:\hellojava>javac src/zhc/U8.java -d ./

Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=utf-8

E:\hellojava>java zhc.U8

Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=utf-8

Hello World!天

Charset.defaultCharset :UTF-8

(试验2.chcp65001,环境变量UTF8)E:\mini\javaProj\hellojava>javac src/zhc/U8.java -d ./

Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=utf-8

E:\mini\javaProj\hellojava>java zhc.U8

Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=utf-8

Hello World!天��

Charset.defaultCharset :UTF-8

(试验3.chcp936,没有环境变量)E:\hellojava>javac -encoding "utf-8" src/zhc/U8.java -d ./

E:\hellojava>java zhc.U8

Hello World!天

Charset.defaultCharset :GBK

(试验4.chcp65001,没有环境变量)E:\hellojava>javac -encoding "utf-8" src/zhc/U8.java -d ./

E:\hellojava>java zhc.U8

Hello World!��

Charset.defaultCharset :GBK

结论:以上4个试验都是在win7下。

在win10下的情况也不正常,版本号14393之后是这样:都用defualtCharset:UTF8这个编码,不论chcp是936还是65001都能正确显示中英混排

329659aed8522919a24c14a8b72aac6a.png

在linux下是正常的,比如在国产系统深度下,用java_tool_opt控制编码,在终端右击可以切换编码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值