2016-06-21 3 views
0

ロケールをループしてロケール "CS"と同じISO3Countryコードを取得すると、 "3文字の国コードCSが見つかりませんでした"というエラーが表示されます。それは期待される行動ですか? 私もJava 1.6でテストしましたが、このエラーは発生していません。ロケールとISO3CountryCodes

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

答えて

0

短い答えは:これはもはや(セルビア・モンテネグロ)を存在​​する国の国コードなので、行動は確かに不確定になる場合があります。

ISO-3166は3つの部分に分かれています。最初の部分はISO-3166-1で、これらの国コードを定義し、順番にいくつかの部分があります。最も関連性が高いのは、それぞれ2文字と3文字の国コードを定義するISO-3166-1 alpha-2ISO-3166-1 alpha-3です。

alpha-2の表によると、「CS」は、存在しなくなったセルビアとモンテネグロの国コードです。下位互換性のため、アルファベット2にはまだ「削除のために予約されている」と記されたエントリがあります。下位互換性のためにおそらくJavaにもあります。

alpha-3の同等のエントリは "SCG"であり、予約済みとしてもマークされます。私はこのコードがあなたに返されると期待しますが、なぜそうでないかも理解できます。 (ISO-3166-3は、もはや存在しない国の国コードを定義しています(長さは4文字で、ここでは「CSXX」は返されます...)