0

我最近在 java 1.7 中看到,如果我在区域设置上循环并获得相同的 ISO3Country 代码,那么对于区域设置“CS”,它会给我错误“找不到 3 个字母的国家代码 CS”。这是预期的行为吗?我还在 java 1.6 中进行了测试,但我没有收到此错误。

Locales[] locales =        GregorianCalender.getAvailableLocales();
For(Locale l: locales){
     System.out.println(l.getISO3CountryCode());
  }  
4

1 回答 1

1

简短的回答是:这是一个不再存在的国家(塞尔维亚和黑山)的国家代码,因此行为可能确实是不确定的。

ISO-3166 分为三个部分。第一部分 ISO-3166-1 定义了这些国家代码,并且依次包含几个部分。这里最相关的是ISO-3166-1 alpha-2ISO-3166-1 alpha-3,它们分别定义了 2 个和 3 个字母的国家代码。

根据 alpha-2 表,“CS”是塞尔维亚和黑山的国家代码,这个国家已不复存在。为了向后兼容,它仍然有一个 alpha-2 条目,标记为“保留删除”。为了向后兼容,它可能还在 Java 中。

alpha-3 中的等效条目是“SCG”,也被标记为保留。我希望此代码会返回给您,但可以理解为什么它可能不会。(或者,ISO-3166-3为不再存在的国家/地区定义了国家/地区代码;它们有四个字母长,也许“CSXX”应该在这里返回......)

于 2016-06-21T15:32:04.657 回答