项目有JDK6升级到JDK8后,发现java.util.Locale.getDefault()无法获取到系统的Local. 比如在control panel->Region中设置locale为China, 用JDK6就能得到“zh_CN”, 但是JDK8返回"en_US".
看了源码,getDefault()返回的是JVM中参数的值。
运行以下代码:
Locale locale = Locale.getDefault();
System.out.println("Locale.getDefault(): "+locale.toString());
String region = AccessController.doPrivileged(
new GetPropertyAction("user.region"));
System.out.println("user.region: "+region);
String language = (String) AccessController.doPrivileged(
new GetPropertyAction("user.language", "en"));
System.out