当前位置: 首页 > 知识库问答 >
问题:

Java 8和11之间相同区域设置的分组分隔符不同

百里雅珺
2023-03-14

我正在根据语言和区域设置区域设置,并希望用此设置解析一个BigDecimal数字。但我面临的问题是两种OpenJDK的分组分隔符是不同的。

下面是我试图使用OpenJDK8和OpenJDK11执行的示例代码。

Locale l = new Locale.Builder().setLanguage("de").setRegion("CH").build();
System.out.println("Locale set to " + Locale.getDefault(Locale.Category.FORMAT));
DecimalFormat nf = (DecimalFormat)NumberFormat.getInstance(Locale.getDefault(Locale.Category.FORMAT));
System.out.println("Grouping Separator: " + nf.getDecimalFormatSymbols().getGroupingSeparator());
OpenJDK 8
---------
Locale set to de_CH
Grouping Separator: '


OpenJDK 11
----------
Locale set to de_CH
Grouping Separator: ’

共有1个答案

郭弘方
2023-03-14

这是一个正确和定义的行为,在Java11版本说明中实现并描述为一个新特性,它引用了JDK-8203868:

基于Unicode Consortium的CLDR(Common locale data Registry)的locale数据已经为JDK11更新。补充平面中的本地化数字(例如,印度Chakma脚本中的本地化数字)被ASCII数字替代,直到JDK-8204092被解析。缅甸地区的中短时模式尚未升级。当JDK-8209175被解析时,这些模式将被升级。

有关CLDR第33版的详细信息,请参阅http://CLDR.unicode.org/index/downloads/cldr-33。

基本上,从JDK11开始,区域设置数据被更新为Unicode CLDRv33。

 类似资料:
  • 我有一组不重叠的,不相邻的区间,例如[{10,15},{30,35},{20,25}]。它们没有排序,但如果需要,我可以对它们进行排序。 现在,我得到了一些新的区间,例如{5,32},并希望生成一组新的区间来描述差异:这个新区间所覆盖的范围不在该集合中。在这个例子中,答案是:[{5,9},{16,19},{26,29}]。 计算这个的快速算法是什么?请注意,集合中通常有1个,有时有2个,很少有3个

  • 本文向大家介绍同时和分层访问存储组织之间的区别,包括了同时和分层访问存储组织之间的区别的使用技巧和注意事项,需要的朋友参考一下 众所周知,在计算机/系统的上下文中,整个性能所依赖的主要关键功能是内存。正是内存及其分配使系统能够快速高效地执行。现在,基于系统中此内存的组织,我们可以区分同时访问和分层访问内存组织。 以下是同时访问存储组织和分层访问存储组织之间的重要区别。 序号 键 同时访问存储组织

  • 我有一个包含如下模式的字符串 如何使用或用于编辑此字符串的其他方法 或者 (我可以在以后删除s。) 我尝试使用for循环对其进行硬编码,但字符串太长,需要很长时间才能运行。

  • 本文向大家介绍分页和细分之间的区别,包括了分页和细分之间的区别的使用技巧和注意事项,需要的朋友参考一下 分页 分页是一种内存管理技术,其中,进程地址空间被分成大小相同的块,称为页面(大小为2的幂,介于512字节和8192字节之间)。进程的大小以页数为单位。类似地,将主存储器划分为称为帧的(物理)存储器的固定小块,并且将帧的大小与页面的大小保持相同,以最佳利用主存储器并避免外部碎片。 类似地,将主存

  • 我通过从Listview中删除默认分隔符来设置我的自定义分隔符: 并在(保留项目图标;保留项目文本): 正因为如此,我在每个项目文本下都有客户分隔符(视图),但在项目图标下没有。 在列表中的最后一项之后,我希望分割符也可以在这样的图标下显示: 以下是通货膨胀的原因: