对于下面的代码,当我像这样运行它时,当我在Tomcat Web应用程序中运行它时,我会得到不同的结果。
public static void main(String[] args)
{
System.out.println(System.getProperty("user.language"));
System.out.println(System.getProperty("user.country"));
System.out.println(Locale.getDefault(Category.DISPLAY));
System.out.println(Locale.getDefault(Category.FORMAT));
Locale l = new Locale("de", "DE");
System.out.println(l.getDisplayLanguage());
DecimalFormatSymbols dfs = new DecimalFormatSymbols(l);
System.out.println(dfs.getDecimalSeparator());
l = new Locale.Builder().setLanguage("de").setRegion("DE").build();
System.out.println(l.getDisplayLanguage());
dfs = new DecimalFormatSymbols(l);
System.out.println(dfs.getDecimalSeparator());
}
独立结果(预期):
en
US
en_US
en_US
German
,
German
,
在Tomcat中:
en
US
en_US
en_US
German
.
German
.
有人可以建议还有什么影响DecimalFormatSymbols(以及NumberFormat),它不会使用提供的语言环境。 我使用JDK 1.8,语言级别为1.7。
编辑:这只有在Tomcat在Eclipse中运行时才会发生。 Eclipse / OSGi似乎会干扰基于语言环境的格式化,但仅限于特定情况。
答案 0 :(得分:1)
Tomcat我们的ENV设置可能有问题我从帖子here看到它。
尝试按照上面的帖子建议启动tomcat,并将以下参数设置为批处理文件:
-Duser.timezone=Europe/Berlin
-Duser.country=DE
-Duser.language=de