目前我的系统语言环境是en-UK ,它曾经是en-US (我已经重新启动了我的计算机,使此更改生效)
当我打印Locale.getDefault().getCountry().toString()我仍然得到美国。
在API中说:
getDefault()
COM对象从一个程序实例化,但不是在同一个用户下运行的另一个程序
对话框 – 没有构造函数
树莓派2与Windows 10 IOT阅读TLC2578 ADC
使用jsoncurlcouchDB以更新cors
Scrapy与TOR(Windows)
也许JVM语言环境与系统区域设置无关? 如果是这样,我如何获得Windows上的系统区域设置?
编辑:
在研究了关于这个问题的其他问题之后,我发现说我正在处理Java 6是很有用的。
我刚刚发现在我的操作系统(Windows 7)上,系统语言环境的变化没有反映在Java中,但是控制面板>区域和语言>格式变化反映出来。
我忽略了一些东西,在生产代码中设置了osgi.nlconfiguration属性,改变了Locale.getDefault将返回的内容
file.canWrite(); file.canRead(); file.canExceute(); 总是返回true,虽然我的文件/目录没有访问权限
为什么D不允许嵌套函数的重载?
ShowWindow无效的窗口句柄
在没有可见的控制台窗口的Windows中创build后台进程
什么是程序终止自己的进程的正确方法(Windows)
您的JVM语言环境和系统语言环境确实可能有所不同。 当第一次加载JVM时,它将它的语言环境设置为与系统的语言环境相同,除非您在命令行中另外指定(不是所有的实现都允许您这样做)。 您可以从Locale.getDefault()看到此JVM语言环境的值。
如果你想改变,你可以: Locale.setDefault("<preferred_locale>") 在这里阅读更多关于它 。
系统区域设置取决于您正在使用的操作系统。 我不太了解Windows,但可以从System.getEnv()看到值。 它返回所有环境属性的Map<String,String> ,并且可以查找类似LANG或GDM_LANG等的内容。
国家变体取自Windows语言环境扩展对话框中的“非Unicode”设置。
Sun JDK 6u27 +和JDK 7中存在bug BugId 7073906 :
Locale.getDefault()返回的语言环境是en_US,当它是en_GB时。
我想这是什么在这里咬你:)
我在生产中实现了一个参数WAS,该参数改变了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
非常感谢所有回答和评论的人。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。