.Net:获取德国国家名称的 ISO3166 代码
.Net: get ISO3166 code for German country name
我有两种方法:一种将给定的 ISO3166 代码转换为相应国家的德语名称(例如 "de-DE" 到 "Deutschland")。这很好用。
现在我需要一种相反的方法。目前看起来像这样:
public static string GetISO3166CodeForGermanCountryName(string countryName)
{
if (string.IsNullOrEmpty(countryName) || countryName.Length == 2)
return countryName;
Thread.CurrentThread.CurrentCulture = new CultureInfo("de-AT");
CultureInfo cInfo = cultures.FirstOrDefault(culture => new RegionInfo(culture.LCID).DisplayName == countryName);
if (cInfo != null && cInfo.Name.Contains("-"))
return cInfo.Name.Split('-')[1]; //take the 2nd part of the culture info name (e.g. "de-AT" --> "AT")
else
return null;
}
这在我的开发机器上运行良好,因为安装的 .Net 框架是德语的。但是,在我们的实时服务器 (Windows Server 2012) 上,所有输入的方法 returns null。发生这种情况是因为安装的 .Net 框架是英文的。我试图通过为 .Net framework 4.5 安装德语语言包来解决此问题,但这没有帮助。
谁能建议不同的解决方案(或 4.6 的工作语言包)?
由于找不到更简单的解决方案,我使用了一个包含所有国家及其名称的 *csv 列表:https://www.laenderdaten.info/downloads/
基于此,我创建了一个帮助程序 class,用于在列表中搜索给定的国家/地区名称。
我有两种方法:一种将给定的 ISO3166 代码转换为相应国家的德语名称(例如 "de-DE" 到 "Deutschland")。这很好用。 现在我需要一种相反的方法。目前看起来像这样:
public static string GetISO3166CodeForGermanCountryName(string countryName)
{
if (string.IsNullOrEmpty(countryName) || countryName.Length == 2)
return countryName;
Thread.CurrentThread.CurrentCulture = new CultureInfo("de-AT");
CultureInfo cInfo = cultures.FirstOrDefault(culture => new RegionInfo(culture.LCID).DisplayName == countryName);
if (cInfo != null && cInfo.Name.Contains("-"))
return cInfo.Name.Split('-')[1]; //take the 2nd part of the culture info name (e.g. "de-AT" --> "AT")
else
return null;
}
这在我的开发机器上运行良好,因为安装的 .Net 框架是德语的。但是,在我们的实时服务器 (Windows Server 2012) 上,所有输入的方法 returns null。发生这种情况是因为安装的 .Net 框架是英文的。我试图通过为 .Net framework 4.5 安装德语语言包来解决此问题,但这没有帮助。 谁能建议不同的解决方案(或 4.6 的工作语言包)?
由于找不到更简单的解决方案,我使用了一个包含所有国家及其名称的 *csv 列表:https://www.laenderdaten.info/downloads/
基于此,我创建了一个帮助程序 class,用于在列表中搜索给定的国家/地区名称。