如何获取系统信息语言环境 - Locale.getDefault()
How to get systeminfo locale - Locale.getDefault()
目前我的系统区域设置是 en-UK
,以前是 en-US
(我已经重新启动计算机以使此更改生效)
当我打印 Locale.getDefault().getCountry().toString()
时,我仍然得到 US。
在 API 中指出:
getDefault()
Gets the current value of the default locale for this
instance of the Java Virtual Machine.
JVM 语言环境可能与系统语言环境无关?如果是这样,我如何在 Windows 上获取系统区域设置?
编辑:
- 在研究了与此相关的其他问题后,我发现说我正在处理 Java 6.
很有用
- 我刚刚发现在我的 OS (Windows 7) 系统区域设置更改没有反映在 Java 中,但是控制面板 > 区域和语言 > 格式变化得到体现。
- 我忽略了一些东西,在生产代码中设置了 osgi.nl 配置属性,改变了 Locale.getDefault 会 return 否则
您的 JVM 语言环境和系统语言环境确实可能不同。
首次加载 JVM 时,它会将其区域设置指定为与系统的区域设置相同,除非您在命令行上另有指定(并非所有实现都允许您这样做)。
你可以从Locale.getDefault()
.
看到这个JVM locale的值是多少
如果您想更改,您可以:Locale.setDefault("<preferred_locale>")
read more about it here.
系统区域设置取决于您使用的OS。我对 Windows 了解不多,但是,您可以看到 System.getEnv()
中的值是什么。它 returns 所有环境属性的 Map<String, String>
,您可以查找 LANG 或 GDM_LANG 等内容
国家/地区变体取自 Windows 语言环境扩展对话框中的 "Non-Unicode" 设置。
Sun JDK 6u27+ 和 JDK 7 中存在错误,BugId 7073906:
The Locale returned from Locale.getDefault() is en_US when it shoud be en_GB.
我想这就是你的问题:)
我意识到在生产中设置了一个改变 Locale.getDefault() return 值的参数。这很难check/prove。
我的解决方案是 user.country 和 user.language 未更改并反映了实际的区域设置。
Locale locale = new Locale(System.getProperty("user.language"),System.getProperty("user.country"));
Locale.setDefault(locale);
//this will do the trick for me
非常感谢所有回答和评论的人。
目前我的系统区域设置是 en-UK
,以前是 en-US
(我已经重新启动计算机以使此更改生效)
当我打印 Locale.getDefault().getCountry().toString()
时,我仍然得到 US。
在 API 中指出:
getDefault()
Gets the current value of the default locale for this instance of the Java Virtual Machine.
JVM 语言环境可能与系统语言环境无关?如果是这样,我如何在 Windows 上获取系统区域设置?
编辑:
- 在研究了与此相关的其他问题后,我发现说我正在处理 Java 6. 很有用
- 我刚刚发现在我的 OS (Windows 7) 系统区域设置更改没有反映在 Java 中,但是控制面板 > 区域和语言 > 格式变化得到体现。
- 我忽略了一些东西,在生产代码中设置了 osgi.nl 配置属性,改变了 Locale.getDefault 会 return 否则
您的 JVM 语言环境和系统语言环境确实可能不同。
首次加载 JVM 时,它会将其区域设置指定为与系统的区域设置相同,除非您在命令行上另有指定(并非所有实现都允许您这样做)。
你可以从Locale.getDefault()
.
如果您想更改,您可以:Locale.setDefault("<preferred_locale>")
read more about it here.
系统区域设置取决于您使用的OS。我对 Windows 了解不多,但是,您可以看到 System.getEnv()
中的值是什么。它 returns 所有环境属性的 Map<String, String>
,您可以查找 LANG 或 GDM_LANG 等内容
国家/地区变体取自 Windows 语言环境扩展对话框中的 "Non-Unicode" 设置。
Sun JDK 6u27+ 和 JDK 7 中存在错误,BugId 7073906:
The Locale returned from Locale.getDefault() is en_US when it shoud be en_GB.
我想这就是你的问题:)
我意识到在生产中设置了一个改变 Locale.getDefault() return 值的参数。这很难check/prove。
我的解决方案是 user.country 和 user.language 未更改并反映了实际的区域设置。
Locale locale = new Locale(System.getProperty("user.language"),System.getProperty("user.country"));
Locale.setDefault(locale);
//this will do the trick for me
非常感谢所有回答和评论的人。