【发布时间】:2013-05-08 14:35:28
【问题描述】:
如果您有以下代码 sn-p 并在区域设置中设置格式,您有时会在下划线前得到两个字母,有时会在下划线前得到三个字母。在 ISO 639-1 中,您只有两个字母,所以不可能是那个?
System.out.println(Locale.getDefault());
【问题讨论】:
如果您有以下代码 sn-p 并在区域设置中设置格式,您有时会在下划线前得到两个字母,有时会在下划线前得到三个字母。在 ISO 639-1 中,您只有两个字母,所以不可能是那个?
System.out.println(Locale.getDefault());
【问题讨论】:
根据Java 7 docs:
【讨论】:
它似乎不是 ISO 标准,而是以下字段的串联:
语言+“”+国家+“”+(变体+“_#”|“#”)+脚本+“-”+扩展名
根据the documentation,这可以返回以下内容:
语言总是小写,国家总是大写,脚本是 总是大写,扩展总是小写。扩展 和私人使用的子标签将按照规范顺序,如中所述 toLanguageTag()。当语言环境既没有脚本也没有扩展名时, 结果与 Java 6 及之前的版本相同。
如果缺少语言和国家字段,则此函数 将返回空字符串,即使变体、脚本或 extensions 字段存在(你不能有一个只有一个 变体,变体必须伴随格式良好的语言或国家 代码)。
如果存在脚本或扩展并且缺少变体,则没有 在“#”之前添加下划线。
此行为旨在支持调试并兼容 与之前使用 toString 预期的语言、国家和 仅限变体字段。将语言环境表示为字符串以进行交换 目的,使用 toLanguageTag()。
例子:
zh_DE _GB en_US_WIN de__POSIX zh_CN_#Hans zh_TW_#Hant-x-java th_TH_TH_#u-nu-thai
【讨论】: