0

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

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

2 回答 2

0

根据Java 7 文档

  1. 语言- ISO 639 alpha-2 或 alpha-3 语言代码,或注册的语言子标签,最多 8 个字母
  2. 脚本- ISO 15924 alpha-4 脚本代码
  3. 国家(地区) ISO 3166 alpha-2 国家代码或 UN M.49 numeric-3 区域代码。
于 2013-05-08T14:39:10.537 回答
0

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

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

根据文档,这可以返回以下内容:

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

如果语言和国家/地区字段都缺失,则此函数将返回空字符串,即使存在变体、脚本或扩展字段(您不能只有一个变体的语言环境,该变体必须伴随着一个很好的 -形成的语言或国家代码)。

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

此行为旨在支持调试并与 toString 的先前使用兼容,即仅预期语言、国家和变体字段。要将语言环境表示为字符串以进行交换,请使用 toLanguageTag()。

例子:

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

于 2013-05-08T14:41:50.267 回答