Java中的Locale类返回哪种标准/格式?

时间:2013-05-08 14:35:28

标签: java iso

如果您有以下代码段,并且您在区域设置中设置了格式,则有时会在下划线之前获得两个字母,有时您会在下划线之前得到三个字母。在ISO 639-1中,你只有两个字母,所以它不能是那个?

System.out.println(Locale.getDefault());

2 个答案:

答案 0 :(得分:0)

根据Java 7 docs

  1. 语言 - ISO 639 alpha-2或alpha-3语言代码,或注册语言子标签最多8个字母
  2. 脚本 - ISO 15924 alpha-4脚本代码
  3. 国家(地区) ISO 3166 alpha-2国家/地区代码或UN M.49数字-3区号。

答案 1 :(得分:0)

它似乎不是ISO标准,而是以下字段的串联:

  

语言+“”+国家+“”+(变体+“_#”|“#”)+脚本+“ - ”+扩展程序

根据the documentation,这可以返回以下内容:

  

语言总是小写,国家总是大写,脚本是   总是标题大小写,扩展名总是小写的。扩展   和私人使用子标签将按照规范顺序进行,如下所述   toLanguageTag()。当语言环境既没有脚本也没有扩展名时,   结果与Java 6和之前的结果相同。

     

如果缺少语言和国家/地区字段,则此功能   将返回空字符串,即使变量,脚本或   存在扩展字段(您不能只有一个区域设置   变体,变体必须伴随着良好的语言或国家   码)。

     

如果存在脚本或扩展且缺少变体,则为no   在“#”之前添加了下划线。

     

此行为旨在支持调试并兼容   以前使用toString预期语言,国家和地区   仅限变体字段。将Locale表示为用于交换的字符串   目的,使用toLanguageTag()。

     

示例:

     

en de_DE   _GB en_US_WIN de__POSIX zh_CN_ #Hans zh_TW_#Hant-x-java th_TH_TH_#u-nu-thai