简体   繁体   English

Java挪威小数点分隔符在Java 6和7中有所不同

[英]Java Norwegian decimal separator different in Java 6 and 7

The following snippet behaves different in Java 6 than Java 7: 以下代码段在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.getDecimalSeparator());   // Java 6: .
                                                 // Java 7: ,

Why is that? 这是为什么? Is this change documented somewhere? 此更改是否记录在某处?

Java 6 had a number of issues regarding Locale s, and this may well be one of them. Java 6关于Locale存在许多问题,这很可能是其中之一。 Certainly, the correct separator for the Norway locale is , . 当然,对于挪威区域设置的正确分离器,

The Oracle bug database does show quite a few bugs related to NO locale... Oracle错误数据库确实显示了许多与无语言环境相关的错误。

According to JDK 6 and JRE 6 Supported Locales and JDK 7 and JRE 7 Supported Locales , the correct/supported syntax for selecting Norwegian Bokmål is "no"/"NO". 根据JDK 6和JRE 6支持的语言环境以及JDK 7和JRE 7支持的语言环境 ,选择NorwegianBokmål的正确/支持的语法是“ no” /“ NO”。

new Locale("no", "NO") gives the correct result under both Java 6 and Java 7. 在Java 6和Java 7下new Locale("no", "NO")给出正确的结果。

CLDR CLDR

In Java 9 and later, the OpenJDK -based implementations of Java switched to using locale data obtained from the Unicode Consortium 's Common Locale Data Repository (CLDR) (see Wikipedia ) by default. Java 9和更高版本中,默认情况下,基于OpenJDK的Java实现切换为使用从Unicode联盟通用语言环境数据存储库(CLDR) (请参阅Wikipedia )获得的语言环境数据。

This switch provides much richer locale data than previously seen in Java. 与以前在Java中看到的相比,此开关提供了更丰富的语言环境数据。 And this switch may mean that you see a change in behavior for some aspects of some locales. 而且此切换可能意味着您会看到某些区域设置某些方面的行为发生变化

See: JEP 252: Use CLDR Locale Data by Default 请参阅: JEP 252:默认情况下使用CLDR语言环境数据

COMMA in Java 10 Java 10中的COMMA

When I run this code: 当我运行此代码时:

    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() );

I get the COMMA character. 我得到了COMMA字符。

java.version: 10.0.2 java.version:10.0.2

Norwegian Bokmål 挪威语Bokmål

,

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM