Java 带区域设置的十进制符号
对于下面的代码,当我像这样运行它时,以及在Tomcat web应用程序中运行它时,我会得到不同的结果Java 带区域设置的十进制符号,java,eclipse,tomcat,locale,Java,Eclipse,Tomcat,Locale,对于下面的代码,当我像这样运行它时,以及在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.getDefa
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
美国
恩努斯
恩努斯
德国的
,
德国的
,
在Tomcat中:
en
美国
恩努斯
恩努斯
德国的
.
德国的
.
是否有人可以建议其他影响DecimalFormatSymbols(以及与此相关的NumberFormat)的因素,而不是使用提供的区域设置。
我正在使用JDK1.8和语言级别1.7
编辑:这仅在Tomcat在Eclipse中运行时发生。Eclipse/OSGi似乎会干扰基于区域设置的格式设置,但仅在特定情况下才如此。Tomcat我们的环境设置可能有问题,我从文章中看到了这一点 尝试按照上面文章中的建议启动tomcat,并将以下参数设置为批处理文件:
-Duser.timezone=Europe/Berlin
-Duser.country=DE
-Duser.language=de
您是否在同一台机器上使用相同的JRE在Tomcat中运行它?是的。两者都在Eclipse内部运行,在同一个项目中。您也尝试过Locale l=Locale.GERMANY吗?这没有什么区别,而且真正的代码应该(而且确实)可以在任意的语言环境中工作。请尝试改用它:
DecimalFormatSymbols dfs=DecimalFormatSymbols.getInstance(l)
。其思想是在运行时使用不同的语言环境,无论启动设置是什么。