关于国际化:Java i18n:从何处获取语言环境的十进制分组字符

Java i18n: Where to get the decimal grouping character for a locale

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

我尝试了以下代码:

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

这里的问题是,语言环境的参数似乎不正确,但是我仍然认为必须在某个地方可以查找这些信息而无需编写程序。

当我在Windows控制面板中更改了德语字符时,似乎没有从机器上的区域设置中获取内容,但是Java程序中没有任何更改。


编辑:问题是您构造Locale的方式。尝试:

1
Locale locale = new Locale("fi");

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

1
2
3
4
Locale locale = new Locale("fi");
DecimalFormat format = (DecimalFormat) NumberFormat.getInstance(locale);
DecimalFormatSymbols symbols = format.getDecimalFormatSymbols();
char groupingChar = symbols.getGroupingSeparator();


在源代码中查找的评论太具有挑战性了...

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

在jdk的rt.jar中,在包sun.text.resources中有文件" FormatData_ [ISO-Code] .class"文件,其中包含用于十进制分组的字符和其他相关值,并且可以通过反编译查看它们。 Java Decompiler(http://java.decompiler.free.fr)在这一方面非常有帮助。