为了账号安全,请及时绑定邮箱和手机立即绑定

ISO_3166-1 国家/地区名称和 java.util.Locale

ISO_3166-1 国家/地区名称和 java.util.Locale

慕的地10843 2021-06-18 06:17:09
我正在尝试将 ISO 分配的国家/地区名称转换为其 ISO_3166-1 alpha 3(3 个字母)代码。我已经在这里看到了这种效果的代码片段。但是,getDisplayCountry方法返回的字符串与ISO 网站上显示的指定名称似乎有所不同。例如,对于 Alpha 3 代码“RUS”,则是ISO 分配的英文名称(又名英文简称)如下所示。getDisplayCountry"Russia"我该如何解决这个问题?特别是如果我不想维护一个单独的查找文件 - 这会破坏使用内置 java 类的全部意义。
查看完整描述

1 回答

?
Qyouu

TA贡献1786条经验 获得超11个赞

Locale.getDisplayCountry()以适合在用户的语言环境中显示给用户的形式返回国家/地区名称:

返回适合向用户显示的语言环境国家/地区名称。如果可能,返回的名称将针对默认的 DISPLAY 语言环境进行本地化。例如,如果语言环境是 fr_FR 并且默认的 DISPLAY 语言环境是 en_US,则 getDisplayCountry() 将返回“France”;如果语言环境是 en_US 并且默认的 DISPLAY 语言环境是 fr_FR,getDisplayCountry() 将返回“Etats-Unis”。如果返回的名称无法针对默认的 DISPLAY 语言环境进行本地化(例如,我们没有克罗地亚的日语名称),则此函数将使用英文名称,并使用 ISO 代码作为最后的手段值。如果语言环境未指定国家/地区,则此函数返回空字符串。

ISO 网站仅列出了英文和法文版本的国家/地区。看起来 Java 可能使用不同(或更改)的国家/地区名称来源,因此即使对于您所指出的 en_US 语言环境,这些名称也不能保证匹配。

如果您只需要匹配显示名称(并且您的显示名称在整个数据集中进行了规范化),您可以在列表之间创建映射。基本上,您将下载 ISO 列表并使用 2 位或 3 位国家/地区代码创建一个包含 ISO 显示名称到 Java 显示名称的查找表。从那里您可以映射您的数据。


查看完整回答
反对 回复 2021-06-23
  • 1 回答
  • 0 关注
  • 246 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信