有没有一种简单的方法来检索 ISO 3166-1 数字国家代码

Posted

技术标签:

【中文标题】有没有一种简单的方法来检索 ISO 3166-1 数字国家代码【英文标题】:Is there an easy way to retrieve the ISO_3166-1_numeric country codes 【发布时间】:2013-08-03 02:37:46 【问题描述】:

我想知道我是否可以在android中获得ISO_3166-1 numeric风格的sim国家代码。

我可以得到 2 个字母的国家 ISO 如下:

TelephonyManager manager = (TelephonyManager)getSystemService(this.TELEPHONY_SERVICE);

String ISO2=manager.getSimCountryIso();

【问题讨论】:

【参考方案1】:

试试这个代码,

TelephonyManager manager = (TelephonyManager)getActivity().getSystemService(getActivity().TELEPHONY_SERVICE);
String ISO2 = manager.getSimCountryIso();
String ISO3 = new Locale("", ISO2).getISO3Country();

【讨论】:

【参考方案2】:

您可以使用Locale 类获取此信息,如下所示:

TelephonyManager manager = (TelephonyManager)getSystemService(this.TELEPHONY_SERVICE);

String ISO2 = manager.getSimCountryIso();

String ISO3 = new Locale("", ISO2).getISO3Country()

【讨论】:

【参考方案3】:

使用Locale 的建议解决方案返回 ISO 3166-1 alpha 3 代码,而不是 ISO 3166-1 数字代码。我找到的解决方案是使用以下库(在我们的特定情况下,鉴于它是 Apache 2.0 许可证,我们只是复制了 CountryCode 类,稍作修改以使其独立):

https://github.com/TakahikoKawasaki/nv-i18n

(在以下answer中找到)。

那么,你的代码就变成了:

TelephonyManager manager = (TelephonyManager)getSystemService(this.TELEPHONY_SERVICE);
String ISO2 = manager.getSimCountryIso();
String ISO3_numeric = CountryCode.getByAlpha2Code(ISO2).getNumeric();

【讨论】:

以上是关于有没有一种简单的方法来检索 ISO 3166-1 数字国家代码的主要内容,如果未能解决你的问题,请参考以下文章

ISO 3166-1α-2 CSV

世界货币查找表 - 使用 ISO 3166-1 alpha-2 代码?

PHP ISO 3166-1 alpha-2

ruby ISO_3166-1国家代码2 char到3 char映射

json 摘自https://en.wikipedia.org/wiki/ISO_3166-1_alpha-3

Android 多国语言