[英]Locale and ISO3CountryCodes
我最近在Java 1.7中看到,如果我在语言环境上循环并获得相同的ISO3Country代码,则对于语言环境“ CS”,它给我错误“找不到3个字母的国家代码CS”。 这是预期的行为吗? 我也在Java 1.6中进行了测试,但没有收到此错误。
Locales[] locales = GregorianCalender.getAvailableLocales();
For(Locale l: locales){
System.out.println(l.getISO3CountryCode());
}
简短的答案是:这是一个不再存在的国家(塞尔维亚和黑山)的国家代码,因此行为的确可能是不确定的。
ISO-3166分为三个部分。 第一部分,ISO-3166-1,定义了这些国家/地区代码,并且又分为几个部分。 这里最相关的是ISO-3166-1 alpha-2和ISO-3166-1 alpha-3 ,它们分别定义了2个字母和3个字母的国家/地区代码。
根据alpha-2表,“ CS”是塞尔维亚和黑山(不再存在的国家)的国家代码。 它仍然具有alpha-2条目,标记为“保留删除”,以实现向后兼容。 为了向后兼容,它可能仍在Java中。
alpha-3中的等效项是“ SCG”,也被标记为保留。 我希望此代码可以返回给您,但可以理解为什么可能不会。 (或者, ISO-3166-3为不再存在的国家/地区定义了国家/地区代码;它们的长度为四个字母,也许应该在此处返回“ CSXX” ...)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.