java - JVM Charset.defaultCharset() 未返回预期的字符集

标签 java character-encoding jvm locale

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

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

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

最佳答案

根据 OpenJDK 源代码,file.encoding 以及 defaultCharset() 在 Windows 上的设置如下:

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

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

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

关于java - JVM Charset.defaultCharset() 未返回预期的字符集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13134833/

相关文章:

java - Java char 以什么编码存储?

java - 为什么我的 fragment 是空白的?

Java Calendar 实例递增 DAY_OF_MONTH 作为递减(仅)HOUR 或 MINUTE 的副作用

mysql - MariaDB 使用 utf8mb4 时出现错误

java - 为什么java虚拟机规范还是1999版

jvm - 永久代是堆的一部分还是在 jvm 中位于自身的不同空间

java - 以编程方式检测 JVM 是否正在使用类共享?

java - Gradle Checkstyle 插件控制台输出

java - Ant Input Task中如何判断输入是否为空?

Java (Android) 字符串中的 UTF-8 字符