什么ISO用于在Locale中定义countryId?

时间:2010-12-11 14:26:51

标签: java locale

如果我阅读了针对Locale的Javadocs,我看到英国存在一个不变的英国(我认为:P)

但是,如果我阅读课程文档,它会说:

  

country参数是有效的ISO   国家代码。这些代码是   大写,双字母代码为   由ISO-3166定义。你可以找到一个   这些代码的完整列表   网站,例如:http://www.iso.ch/iso/en/prods-services/iso3166ma/02iso-3166-code-lists/list-en1.html

但是,在ISO 3166中,United Kingdom is GB

的两个字母代码

那么,为什么英国的Locale countryId是英国?什么iso用于Locale对象的countryId?

2 个答案:

答案 0 :(得分:1)

确实是ISO 3166.常量java.util.Locale.UK的值为"en_GB"。因此,尽管它被称为英国,它具有正确的价值。

答案 1 :(得分:1)

实际上java.util.Locale.UK是一个确实代表英国的静态常数。然而,该常量的Locale实例使用的ISO国家/地区代码是“GB”,如ISO 3166所述。请注意,“UK”还有一个所谓的ISO国家代码预订(另请参阅Wikipedia)。为什么他们将静态语言环境命名为“UK”而不是“GB”是我能猜到的,但很可能是因为人们更习惯于“英国”而不是“GB”,尽管后者当然是ISO标准