Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 带区域设置的十进制符号_Java_Eclipse_Tomcat_Locale - Fatal编程技术网

Java 带区域设置的十进制符号

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

对于下面的代码,当我像这样运行它时,以及在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
美国
恩努斯
恩努斯
德国的
,
德国的
,
在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)
。其思想是在运行时使用不同的语言环境,无论启动设置是什么。