Java中如何将ISO3166-1 alpha-2国家代码转换为对应国家名称
Java 8 将ISO alpha-2国家代码转换为国家全称的实现方案
Java 8原生内置的java.util.Locale类即可实现该需求,无需引入额外第三方依赖。
实现思路
- 核心调用
Locale类的getDisplayCountry()方法,通过传入ISO alpha-2代码构造Locale实例,即可获取对应国家全称 - 如需返回中文国家名,指定
Locale.CHINA作为显示语言参数;如需返回英文国家名,指定Locale.US即可
代码示例
import java.util.Locale; public class CountryCodeConverter { /** * ISO alpha-2 转中文国家全称 * @param isoAlpha2 两位国家代码,如"CN"、"US" * @return 对应国家中文全称,无匹配时返回原代码 */ public static String convertToChineseName(String isoAlpha2) { if (isoAlpha2 == null || isoAlpha2.trim().length() != 2) { return isoAlpha2; } Locale locale = new Locale("", isoAlpha2); String countryName = locale.getDisplayCountry(Locale.CHINA); // 处理无匹配的异常场景 return countryName.equals(isoAlpha2.toLowerCase()) ? isoAlpha2 : countryName; } /** * ISO alpha-2 转英文国家全称 * @param isoAlpha2 两位国家代码,如"CN"、"US" * @return 对应国家英文全称,无匹配时返回原代码 */ public static String convertToEnglishName(String isoAlpha2) { if (isoAlpha2 == null || isoAlpha2.trim().length() != 2) { return isoAlpha2; } Locale locale = new Locale("", isoAlpha2); String countryName = locale.getDisplayCountry(Locale.US); return countryName.equals(isoAlpha2.toUpperCase()) ? isoAlpha2 : countryName; } public static void main(String[] args) { // 测试用例 System.out.println(convertToChineseName("CN")); // 输出:中国 System.out.println(convertToChineseName("US")); // 输出:美国 System.out.println(convertToEnglishName("JP")); // 输出:Japan } }
注意事项
- 构造Locale实例时第一个语言参数留空即可,仅传入国家代码参数就可满足需求
- JDK内置编码库已覆盖绝大多数常用国家,如果存在冷门自定义编码匹配需求,可以自行维护K-V映射表做补充适配
- 建议提前对入参做非空、长度校验,避免非法参数导致的异常返回
内容的提问来源于stack exchange,提问作者Hamza Farooq
相关产品推荐
相关产品推荐

