有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

国际化JavaI18N:从何处获取区域设置的十进制分组字符

问题:当我想知道在使用给定的语言环境时,哪个字符将用于十进制分组时,我必须查看哪里

我尝试了以下代码:

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

这里的问题是,区域设置的参数似乎不正确,但无论如何,我认为一定有某个地方可以查找这些信息,而无需为其编写程序

我在windows控制面板中更改了德语字符,但java程序中没有任何更改,这似乎不是从我机器上的区域设置中获取的


共 (2) 个答案

  1. # 1 楼答案

    编辑:问题在于你构建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. # 2 楼答案

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

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

    在jdk的rt.jar中,在包sun中。文本参考资料那里有一些文件“FormatData_u[ISO Code].class”,其中包含十进制分组字符和其他相关值,可以通过反编译查看这些文件。Java反编译器(http://java.decompiler.free.fr)在这方面非常有用