我在MS Windows 7上运行Java SE 8,并使用Eclipse和Netbeans。通过运行以下程序,我发现每个表达式的返回值是不同的!
System.out.println(System.getProperty("file.encoding"));
System.out.printf(Charset.defaultCharset());
关于Charset.defaultCharset(),它被描述为“返回默认字符集”,而file.encoding则被解释为“JVM系统属性file.encoding中保存了默认字符集”。因此,似乎Charset.defaultCharset()必须返回与file.encoding中存储的内容完全相同的结果。但是我发现这并不总是发生!!例如,如果我通过
更改file.encoding的内容System.setProperty("file.encoding", "Big5");
System.out.println(System.getProperty("file.encoding"));
它输出Big5编码,但是...
System.out.printf(Charset.defaultCharset());
在Eclipse中它会打印出Windows-1256,而在Netbeans中则会打印出UTF-8的先前值。请问能否解释一下它们是什么以及实际上它们之间的关系和区别。
更新:过了一段时间后,在这个网站上我发现了与这个主题相关的非常有用的内容,问题得到了解决:
https://javarevisited.blogspot.com/2012/01/get-set-default-character-encoding.html?m=1