2016-06-21 3 views
0

Я недавно видел в java 1.7, что если я зацикливаюсь на Locales и получаю код ISO3Country для того же самого, то для Locale «CS» он дает мне ошибку «не смог найти 3-значный код страны CS». Ожидается ли поведение? Я также тестировал в java 1.6, но там я не получаю эту ошибку.Locale и ISO3CountryCodes

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

ответ

0

Короткий ответ: Это код страны для страны, которая больше не существует (Сербия и Черногория), поэтому такое поведение действительно может быть неопределенным.

ISO-3166 разделен на три части. Первая часть, ISO-3166-1, определяет эти коды стран и, в свою очередь, имеет несколько частей. Наиболее важными здесь являются ISO-3166-1 alpha-2 и ISO-3166-1 alpha-3, которые определяют 2 и 3-буквенные коды стран, соответственно.

Согласно таблице «альфа-2», «CS» является кодом страны для Сербии и Черногории, страны, которая больше не существует. Он по-прежнему имеет запись в альфа-2, помеченную как «зарезервированная для удаления», для обратной совместимости. Вероятно, он также остается в Java для обратной совместимости.

Эквивалентная запись в альфа-3 является «SCG», а также отмечена как зарезервированная. Я бы ожидал, что этот код будет возвращен вам, но может понять, почему этого не может быть. (В качестве альтернативы ISO-3166-3 определяет коды стран для стран, которые больше не существуют, они длиной четыре буквы, и, возможно, «CSXX» - это то, что должно быть возвращено здесь ...)

Смежные вопросы