Java 6和Java 7中的Java挪威十进制分隔符不同
以下代码段在Java 6和Java 7中的行为不同:Java 6和Java 7中的Java挪威十进制分隔符不同,java,localization,locale,java-7,java-6,Java,Localization,Locale,Java 7,Java 6,以下代码段在Java 6和Java 7中的行为不同: final Locale locale = new Locale("nb", "NO"); System.out.println(locale.getDisplayLanguage()); // Norwegian Bokmål final DecimalFormatSymbols dfs = new DecimalFormatSymbols(locale); System.out.println(dfs.getDecimalSeparat
final Locale locale = new Locale("nb", "NO");
System.out.println(locale.getDisplayLanguage()); // Norwegian Bokmål
final DecimalFormatSymbols dfs = new DecimalFormatSymbols(locale);
System.out.println(dfs.getDecimalSeparator()); // Java 6: .
// Java 7: ,
为什么呢?这种变化是否有文档记录?Java6在
Locale
s方面存在许多问题,这很可能是其中之一。当然,挪威地区的正确分隔符是,
根据和,选择挪威语Bokmål的正确/受支持语法为“NO”/“NO”
newlocale(“no”、“no”)
在Java 6和Java 7下都给出了正确的结果。CLDR
在和之后的版本中,基于Java的实现切换到使用默认情况下从的(请参阅)获得的语言环境数据
这个开关提供了比以前在Java中看到的更丰富的语言环境数据。这个切换可能意味着您看到一些地区的某些方面的行为发生了变化
见:
Java10中的逗号
当我运行此代码时:
System.out.println( "java.version: " + System.getProperty( "java.version" ) );
final Locale locale = new Locale( "nb" , "NO" );
System.out.println( locale.getDisplayLanguage() ); // Norwegian Bokmål
final DecimalFormatSymbols dfs = new DecimalFormatSymbols( locale );
System.out.println( dfs.getDecimalSeparator() );
我得到了逗号字符
java.version:10.0.2
挪威博克马尔
,
哪一个是正确的?根据,Java7应该是正确的。也许是一个bug修复程序?是的,Java7是正确的。但即使如此,这似乎是一个突破性的变化,所以我很惊讶,我找不到任何地方提到这一变化。