You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中如何将Locale对象转换为ISO 3166标准的en-US格式字符串

实现步骤

首先需要先修正Locale实例的初始化参数:ISO 3166规范规定的美国国家代码为两位字符US,你使用的USA是不符合规范的入参,会导致后续输出结果异常。

方案1:Java 7及以上版本(推荐)

Java 7开始Locale类内置了toLanguageTag()方法,专门用于输出符合IETF BCP 47(兼容ISO 3166规范)的横杠分隔格式语言标签,示例代码如下:

// 第二个参数传入符合ISO 3166规范的两位国家代码
Locale l = new Locale("en", "US");
String targetStr = l.toLanguageTag();
// 输出结果为 en-US
System.out.println(targetStr);

方案2:兼容Java 6及更早版本

如果你的项目依赖版本低于Java 7,没有内置的toLanguageTag()方法,可以手动拼接语言代码和国家代码实现需求:

Locale l = new Locale("en", "US");
String targetStr = l.getLanguage();
if (!l.getCountry().isBlank()) {
    targetStr += "-" + l.getCountry();
}
// 输出结果为 en-US
System.out.println(targetStr);

补充说明

Locale类的toString()方法返回的下划线分隔格式是Java早期设计的内部表示格式,仅用于Java内部逻辑识别,不适用于输出符合通用ISO规范的语言标签场景。

内容的提问来源于stack exchange,提问作者Deepesh kumar Gupta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 23:24:01