带区域设置的DecimalFormatSymbols

Las*_*o B 11 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.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());
}
Run Code Online (Sandbox Code Playgroud)

独立结果(预期):

en
US
en_US
en_US
German
,
German
,
Run Code Online (Sandbox Code Playgroud)

在Tomcat中:

en
US
en_US
en_US
German
.
German
.
Run Code Online (Sandbox Code Playgroud)

有人可以建议还有什么影响DecimalFormatSymbols(和NumberFormat),它不使用提供的语言环境.我正在使用JDK 1.8,语言级别为1.7.

编辑:这只发生在Tomcat在Eclipse中运行时.Eclipse/OSGi似乎干扰了基于语言环境的格式,但仅限于特定情况.

Rag*_*eer 1

Tomcat 我们的 ENV 设置可能有问题,我从这里的帖子中看到它。

尝试按照上面帖子中的建议启动 tomcat,并将以下参数设置为批处理文件:

-Duser.timezone=Europe/Berlin
-Duser.country=DE
-Duser.language=de
Run Code Online (Sandbox Code Playgroud)