将ISO3国家/地区代码转换为ISO2国家/地区代码 - Windows Phone 8

时间:2014-06-16 09:17:45

标签: c# windows-phone-8

如何将ISO-3国家/地区代码转换为ISO-2国家/地区代码。例如,我有一个字符串值“USA”,需要转换为“US”。

我在传递 Latitude 之后,将API( Microsoft.Phone.Maps.Services.MapAddress.CountryCode )中的3位数国家/地区代码作为字符串值获取经度的位置。我检查了Windows Phone 8 API堆栈但找不到任何相关内容。

在Windows Phone 8中可以吗?任何图书馆都可以这样做吗? 任何帮助将不胜感激。 感谢。

2 个答案:

答案 0 :(得分:2)

好像你在WP上遇到了自定义映射。

主要可用于WP的本机Win NLS API不包含EnumSystemGeoID函数来枚举WP上的所有值。 

http://msdn.microsoft.com/en-us/library/windows/desktop/dd317826(v=vs.85).aspx

请参阅c:\ Program Files(x86)\ Windows Phone Kits \ 8.0 \ Include \ winnls.h:

#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_PC_APP)

WINBASEAPI
BOOL
WINAPI
EnumSystemGeoID(
    _In_ GEOCLASS        GeoClass,
    _In_ GEOID           ParentGeoId,
    _In_ GEO_ENUMPROC    lpGeoEnumProc);

#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_PC_APP) */

这也可能是为什么托管的RegionInfo不能在WP上提供ThreeLetterISORegionName属性。

答案 1 :(得分:0)

看起来没有内置方法可以做到这一点。您可以使用GenericTypeTea's answer中的方法。但是,如果您需要转换许多国家/地区代码,则可以避免使用Cultures枚举并预先计算国家/地区代码转换的映射字典。

请查看Converting country codes in .NET