2009-04-03 58 views
22

que no sea Locale.getISOCountries() es decir, porque ya soy getting some strange errors with that. ¿Cuál es la mejor manera de obtener los códigos de país de 2 letras, así como el nombre completo del país?La mejor manera de obtener una lista de países en Java

+0

¿Puedes pegar el stacktrace aquí? ¿Y jdk estás usando? O intente sin importar java.util.Locale.getISOCountries(), solo para asegurarse de que es la misma configuración regional que tenía previsto. –

Respuesta

5

Para un proyecto separado, tomé los datos de código de país el ISO site.

se guarda del siguiente:

  • Los nombres son en todos los casquillos. Es probable que desee ajustarlo para que no lo sea.
  • Los nombres no son todos en ASCII simple.
  • Los nombres no son enteramente neutrales desde el punto de vista político (probablemente sea imposible para cualquier lista de países pretendida). Por ejemplo, "Taiwán, Provincia de China" es un nombre. Un buen punto de partida para aprender sobre los problemas es this blog post.
1
  1. crear un mapa de esta página http://www.theodora.com/country_digraphs.html
  2. guardarlo en un archivo (sugiero XMLEncoder/clase XMLDecoder)
  3. crear una clase envoltorio que carga este mapa desde el archivo (que haría uso de una singleton perezosamente inicializado) y permite el acceso a los métodos get (...).
  4. Repita (o utilice un mapa bidireccional) estos pasos para cada columna de la tabla en la página web mencionada anteriormente.
  5. Fancy-Tiempo: tirar un poco de código para envolver las entradas en un objeto de referencia (? SoftReference), de modo que el mapa no arrojará MemoryErrors
38

fragmentos de código: Ver

String[] countryCodes = Locale.getISOCountries(); 

for (String countryCode : countryCodes) { 

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

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

} 

se refieren a este country list in Java para más ejemplos.

Cuestiones relacionadas