JVM Charset.defaultCharset()不返回预期的字符集

时间:2012-10-30 08:00:43

标签: java character-encoding jvm locale

我的操作系统是带有希伯来语语言环境的Windows 7,并且在我的代码中使用了Java 6。 我已将我的语言环境更改为英语(美国),并将显示语言更改为英语。 我重新启动了我的电脑,然后在我的java代码中尝试获取默认字符集,如下所示:

String str = Charset.defaultCharset().name();

结果,str设置为 windows-1255 这意味着它仍然使用希伯来语作为默认字符集 什么似乎是问题?

1 个答案:

答案 0 :(得分:2)

通过OpenJDK来源,file.encoding以及defaultCharset()在Windows上根据以下内容设置:

Java 6:GetUserDefaultLCID API函数,对应于“区域和语言”控制面板小程序的“格式”选项卡上的“格式”选项。

Java 7:GetSystemDefaultLCID API函数,对应于“区域和语言”控制面板小程序的“管理”选项卡上的“非Unicode程序的语言”,除非您设置了sun.locale.formatasdefault Java系统属性到true,这将恢复到Java 6的行为。

因此,对于Java 6,Format是要更改的设置。