“官方”国家/地区列表的数据来源

14

最近我们的Web应用程序向用户呈现的国家/地区列表已经过时,出现了问题。

目前,我们有几个DB表来存储本地化国家名称以及它们的地区(州)。然而随着世界的发展,这个列表是不断变化的,维护起来非常麻烦,因为一些地区被删除,一些地区合并 - 现有数据需要不断更新。

在处理多语言环境下的国家/地区列表时,是否有最佳实践可遵循?

是否存在一个标准或规范?我知道ISO 3166,但他们的列表不是特别适合数据库...而且它没有全部本地化。

理想的解决方案将允许我们“同步”到它?最好支持多种语言。该解决方案最好是免费或基于订阅,并提供更改历史记录,以便我们可以更新我们的数据(即tblAddress)。

谢谢!


1
这一直让我感到困扰。我总是想要一个有元数据的深度XML或SQL转储,包括世界->大陆->国家->地区->城市->省等等。 - Aiden Bell
9个回答

14

很棒 - 这是我迄今为止见过的最完整的解决方案。 - jfrobishow
如此完整,以至于它的“allCountries”数据集(解压后为1.3 GB的txt文件)中包含了“迪拜华尔道夫阿斯托利亚酒店蛋糕精品店”的条目。我内心的一部分渴望深入研究并弄清楚迪拜的一家酒店糕点店为何被列为一个国家,但大部分我只需要一个可用的国家列表,而不是一个需要解决的谜团,所以...继续前进。 - undefined

8

这并不存在。这是一个政治问题,只能在你自己的应用程序上下文中解决。决定使用ISO 3166可能是最容易辩护的。我知道至少有以下问题:

  • 中国/台湾
  • 以色列/巴勒斯坦
  • 中国/西藏
  • 希腊/马其顿

不确定为什么这会得到负分。 - Stephan Eggermont
1
我也不是;顺便说一下,克罗地亚/斯洛文尼亚。 - Rook
不,这对荷兰人来说也很明显 :) - Stephan Eggermont
我所知道的巴伐利亚就是他们酿造好啤酒 :) 不过德国也是。 - jfrobishow
我也一开始以为这只是个玩笑。但是当我看到有关克罗地亚和斯洛文尼亚的评论时,我就必须纠正一下 - 或许并不是必要的,抱歉。 - Kariem
显示剩余2条评论

3

ISO在这里列出的代码列表对数据库友好,虽然它们只包括短名称和代码。


谢谢,那个链接让我找到了这个网址: http://www.iso.org/iso/publications_and_e-products/databases.htm#PUB100050这是一个Access数据库,您可以订购其中包含ISO 3166-1(国家)代码和ISO 3166-2(地区)代码。然而,它并不理想,因为它不是自动化的(您必须购买每个版本),也不能让您跟踪更新现有数据的变化。此外,它似乎只提供英语和法语版本。无论如何,这是一个好发现 +1 - jfrobishow
那个链接现在已经失效了。 - gregoltsov

2

你好!你可以在https://gist.github.com/kamermans/1441495找到一个免费的所有国家及其所属大陆的转储,使用起来非常简单。只需下载该转储文件并上传到您的数据库中即可。


2
你可以尝试使用CLDR。
这组数据由Unicode组织维护,定期更新,数据版本化,因此您可以轻松管理列表状态。 http://cldr.unicode.org/

2
这个网站看起来非常不错:支持多种语言,可更新选项,数据库无关的导入文件格式,提供国家、地区、城市信息和其他一些你可能需要或者不需要的功能。
如果只需要用于一个服务器,价格也相当实惠。

同意 - 我会更深入地研究它。这很有前途,当然存在政治问题,但在某个时候你必须称呼这个国家为什么... - jfrobishow

1

好的,等等,你只是想要一个最新的国家列表吗?还是你需要知道X国已经分裂成了Y国和Z国?因为我不知道有任何自动化的方法可以得到后者。即使是ISO数据库的更新也是以PDF格式分发的(你需要自己实现更改)。


好的更新,例如将X分裂为Y/Z,将是最好的选择 - 因为它将允许对现有数据进行更新。当一个国家消失/合并时,您通常如何处理“孤立”的地址?或更重要的是,州,这似乎经常发生。 - jfrobishow

1

欧盟维护有关地方行政单位(LAUs)的数据,这些数据可以作为分层的 XLS 文件以多种语言 下载


0

联合国统计司,统计使用的标准国家或地区代码(M49)

在左侧页面上查找“搜索和下载:完整视图”。这将引导您到这里

将国家按大陆、子大陆地区、最不发达国家等分组。

如果您无法导入Excel版本,请注意CSV具有未加引号的字段和一个国家名称中的逗号,这将破坏您的导入(“Bonaire,Sint Eustatius和Saba”)。也许首先在LibreOffice或其他软件中打开它,修复损坏的国家名称并将其其他最右列移到原位。然后将所有单元格设置为文本类型,使用[编辑过滤器设置]选中[x]保存csv,并确保字符串分隔符设置为“,”,因为默认情况下应该这样。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接