[英]How to get systeminfo locale - Locale.getDefault()
目前我的系統區域設置是en-UK
,它曾經是en-US
(我已重新啟動計算機以使此更改生效)
當我打印Locale.getDefault().getCountry().toString()
我仍然得到了美國。
在API中它聲明:
getDefault()
獲取此Java虛擬機實例的缺省語言環境的當前值。
也許JVM語言環境與系統區域設置無關? 如果是這樣,我如何在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, BugId 7073906中存在錯誤 :
Locale.getDefault()返回的Locale是en_US,當它是en_GB時。
我想這就是咬你的地方:)
我在生產中實現了一個參數WAS被設置,改變了Locale.getDefault()的返回值。 這很難檢查/證明。
我的解決方案是user.country和user.language沒有被更改並反映了實際的Locale。
Locale locale = new Locale(System.getProperty("user.language"),System.getProperty("user.country"));
Locale.setDefault(locale);
//this will do the trick for me
非常感謝所有回答和評論的人。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.