目前我的系统区域设置是en-UK,它以前是en-US (我已经重新启动了我的计算机以使此更改生效)
不过,当我打印Locale.getDefault().getCountry().toString()的时候,我还是得到了我们。
它在API中声明:
getDefault() 获取Java虚拟机此实例的默认区域设置的当前值。
也许JVM区域设置与系统区域设置无关?如果是,如何在Windows上获得系统区域设置?
编辑:
发布于 2015-10-27 10:11:27
我意识到在生产中设置了一个参数,它改变了Locale.getDefault()返回值。这是很难证实的。
我的解决方案是,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非常感谢每一个回答和评论的人。
发布于 2015-10-22 11:37:12
您的JVM区域设置和系统区域设置可能确实不同。当JVM首次加载时,它将其区域设置指定为与系统的区域设置相同,除非在命令行中另有规定(并非所有实现都允许您这样做)。您可以从Locale.getDefault()中看到这个JVM区域设置的值。
如果您想要更改,您可以:Locale.setDefault("<preferred_locale>") 在这里阅读更多关于它的内容。。
系统区域设置取决于您正在使用的操作系统。我对Windows不太了解,但是,您可以从System.getEnv()中看到值。它返回所有环境属性的Map<String, String>,您可以查找类似LANG或GDM_LANG之类的内容。
发布于 2015-10-26 19:54:47
国家变体是从Windows语言环境扩展对话框中的“非Unicode”设置中提取的。
https://stackoverflow.com/questions/33146116
复制相似问题