getISOCountries()方法只显示国家名称的两个字母。使用此方法获取完整国家名称是否可行?

4
我使用了以下代码,但它只显示ISO国家名称的两个数字。例如,对于“印度”,它只显示“IN”。我能否显示完整的名称,如“印度”?
String[] loc= Locale.getISOCountries();
for(int a=0;a<loc.length;a++)
{
    System.out.println("ISO Contry "+a+":"+loc[a]);
}

我想要ISO国家的全称。使用这种方法是否可能获得?
3个回答

4

尝试使用 getDisplayCountry() 方法。

例子:

import java.util.Locale;

public class Main {

  public static void main(String [] argv) {

    Locale defaultLocale = Locale.getDefault();
    System.out.println(defaultLocale.getDisplayCountry()); // displays United States
  }
}

编辑: 要获取完整的国家名称列表,我不知道有什么方法。相反,您可以下载这个ISO 3166 Codes,其中包含完整国家名称与2个字母ISO 3166名称的映射,使用之前的getISOCountries方法获取2个字母名称并使用映射。


1
是的,谢谢您的回答。我尝试了一下,getDisplaycountry()方法很好用。但是我只能得到ISO国家中已经存在于这些国家中的单个国家。如何获取所有国家的名称? - Venkat

2

在这里,我们只能获取到getAvailableLocale()方法中可用的Locale的全名。

import java.util.*;

public class Locales
{
  public static void main(String[] args)
  {
    Locale[] locales = Locale.getAvailableLocales();
    for(int i = 0; i < locales.length; i++)
    {
      String locale_name = locales[i].getDisplayName();
      System.out.println((i+1)+":"+locale_name);
    }
  }
}

1
我认为这段代码对于让开发人员了解区域设置方面的情况非常有用,因此我稍微调整了一下代码并在ideone.com上运行了一下。这里是语言/国家对的排序映射http://ideone.com/gPBgV(如果ideone链接失效,我还创建了一个输出的pastebin链接)。 - Patrick

2

无需下载任何文件。 您可以使用给定的 2 个国家字母再次创建 Locale 对象,因此您可以这样做:

String[] locales = Locale.getISOCountries();

    for (String countryCode : locales) {

        Locale obj = new Locale("", countryCode);

        System.out.println("Country Code = " + obj.getCountry()
            + ", Country Name = " + obj.getDisplayCountry());

    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接