首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何获取systeminfo locale - Locale.getDefault()

如何获取systeminfo locale - Locale.getDefault()
EN

Stack Overflow用户
提问于 2015-10-15 10:29:26
回答 4查看 3.4K关注 0票数 2

目前我的系统区域设置是en-UK,它以前是en-US (我已经重新启动了我的计算机以使此更改生效)

不过,当我打印Locale.getDefault().getCountry().toString()的时候,我还是得到了我们。

它在API中声明:

getDefault() 获取Java虚拟机此实例的默认区域设置的当前值。

也许JVM区域设置与系统区域设置无关?如果是,如何在Windows上获得系统区域设置?

编辑:

  • 在研究了有关这方面的其他问题之后,我发现说我正在处理Java 6很有用。
  • 我刚刚发现,在我的操作系统(Windows 7)上,系统区域设置的变化没有反映在Java中,但是Control > Region和Language > Formats被反映了。
  • 我忽略了一些东西,在生产代码中设置了osgi.nl配置属性,更改了Locale.getDefault否则会返回的内容
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-10-27 10:11:27

我意识到在生产中设置了一个参数,它改变了Locale.getDefault()返回值。这是很难证实的。

我的解决方案是,user.country和user.language没有改变,并且反映了实际的区域设置。

代码语言:javascript
复制
Locale locale = new Locale(System.getProperty("user.language"),System.getProperty("user.country"));
Locale.setDefault(locale);
//this will do the trick for me

非常感谢每一个回答和评论的人。

票数 1
EN

Stack Overflow用户

发布于 2015-10-22 11:37:12

您的JVM区域设置和系统区域设置可能确实不同。当JVM首次加载时,它将其区域设置指定为与系统的区域设置相同,除非在命令行中另有规定(并非所有实现都允许您这样做)。您可以从Locale.getDefault()中看到这个JVM区域设置的值。

如果您想要更改,您可以:Locale.setDefault("<preferred_locale>") 在这里阅读更多关于它的内容。

系统区域设置取决于您正在使用的操作系统。我对Windows不太了解,但是,您可以从System.getEnv()中看到值。它返回所有环境属性的Map<String, String>,您可以查找类似LANG或GDM_LANG之类的内容。

票数 3
EN

Stack Overflow用户

发布于 2015-10-26 19:54:47

国家变体是从Windows语言环境扩展对话框中的“非Unicode”设置中提取的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33146116

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档