Mbg
Mbg

Reputation: 193

Java code to convert country codes alpha-2 (IN) to alpha 3 (IND)

Using Java, Is there a quick way to convert an alpha-2 country code (IN or GB) to the alpha-3 equivalent (IND or GBR)?

I can get the alpha-2 codes with:

String[] codes = java.util.Locale.getISOLanguages();

That's not a problem, actually my application reads in the alpha-2 code, but I need to output the alpha-3 equivalent .

Is there a similar way like above to get the alpha-3 codes?

Any suggestions?

Upvotes: 19

Views: 29978

Answers (4)

Arne Burmeister
Arne Burmeister

Reputation: 20604

Yes, simple create a Locale and get if from the locale:

String alpha3Country = new Locale("en", alpha2County).getISO3Country();

BTW: getISOLanguages() returns language codes (lowercase), getISOCountries() return country codes (uppercase)

Upvotes: 13

Codelicious
Codelicious

Reputation: 634

Gopi's answer works. BUT take note that the returned codes are the ISO 3166 country codes and not the ISO 4217 currency codes. These differ slightly so use with caution

Upvotes: 1

stacker
stacker

Reputation: 68982

Since you read in the codes, you can't hardcode them you rather should create a lookup table to convert into ISO codes.

public static void main(String[] args) {
        // setup
        Locale[] availableLocales = Locale.getAvailableLocales();
        HashMap<String, String> map = new HashMap<String, String>();
        for ( Locale l : availableLocales ) {
            map.put( l.getCountry(), l.getISO3Country() );
        }
        // usage
        System.out.println( map.get( "IN" ) );
        System.out.println( map.get( "GB" ) );
    }

Upvotes: 5

Gopi
Gopi

Reputation: 10293

This works -

    Locale locale = new Locale("en","IN");
    System.out.println("Country=" + locale.getISO3Country());

Output:

Country=IND

Upvotes: 21

Related Questions