gpt4 book ai didi

java - Charset.defaultCharset() 和 file.encoding 有什么区别?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:46:53 26 4
gpt4 key购买 nike

我在 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

最佳答案

您从 Charset.defaultCharset() 中获取的值是 JVM 的启动值。之后无法更改。

另一方面,系统属性可以更改,但您是否在各种 JDK 类中获得所需的效果是另一回事。

为了使用不同的字符集,最好提供一个 JVM 参数,例如

java -cp <classpath> <package.classname> -Dfile.encoding=Big5

关于java - Charset.defaultCharset() 和 file.encoding 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51798825/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com