代码之家  ›  专栏  ›  技术社区  ›  Mathias Weyel

Java I18N:在哪里获取一个区域的十进制分组字符

  •  4
  • Mathias Weyel  · 技术社区  · 16 年前

    问题:当我想知道在使用给定区域设置时,哪些字符将用于十进制分组时,我必须在哪里查找?

    我尝试了以下代码:

    Locale locale = new Locale("Finnish", "fi");
    DecimalFormat format = (DecimalFormat) DecimalFormat.getInstance(locale);
    System.out.println(format.format(12345678.123));
    

    这里的问题是,区域设置的参数似乎不正确,但我无论如何认为必须有一个地方可以在不编写程序的情况下查找此信息。

    在Windows控制面板中,我更改了我的机器上的区域设置,但在Java程序中没有变化。

    2 回复  |  直到 11 年前
        1
  •  11
  •   Jon Skeet    16 年前

    编辑:问题在于您构建 Locale . 尝试一下:

    Locale locale = new Locale("fi");
    

    要回答有关如何以编程方式获取分隔符的问题,请使用:

    Locale locale = new Locale("fi");
    DecimalFormat format = (DecimalFormat) NumberFormat.getInstance(locale);
    DecimalFormatSymbols symbols = format.getDecimalFormatSymbols();
    char groupingChar = symbols.getGroupingSeparator();
    
        2
  •  1
  •   Mathias Weyel    16 年前

    寻找消息来源的评论太具有挑战性…

    在这里可以找到这些东西:

    在jdk的rt.jar中,sun.text.resources包中有文件“formatdata u[iso code].class”文件,其中包含十进制分组字符和其他相关值,可以通过对它们进行反编译来查看。Java反编译程序(Java反编译程序) http://java.decompiler.free.fr )在那方面很有帮助。