【问题标题】:RegionInfo and GeoIdRegionInfo 和 GeoId
【发布时间】:2011-08-19 16:22:53
【问题描述】:

我正在考虑使用 RegionInfo.TwoLetterISORegionName 作为数据库属性,从中获取有关国家/地区的信息。直到我看到 RegionInfoGeoId,它似乎更健壮。

您会存储哪些来支持国际化?您将如何从 GeoId 创建 RegionInfo?

干杯,
浆果

【问题讨论】:

    标签: .net internationalization regioninfo


    【解决方案1】:

    使用 P/Invoke 和 GetGeoInfo 函数,您可以从 GeoID 获取一些信息:

        public static string GetGeoInfo(int geoId, SYSGEOTYPE geoType)
        {
            string s = new string('\0', 256);
            int size = GetGeoInfo(geoId, geoType, s, 256, 0);
            if (size <= 0)
                return null;
    
            return s.Substring(0, size - 1);
        }
    
        public enum SYSGEOTYPE
        {
            GEO_NATION = 0x0001,
            GEO_LATITUDE = 0x0002,
            GEO_LONGITUDE = 0x0003,
            GEO_ISO2 = 0x0004,
            GEO_ISO3 = 0x0005,
            GEO_RFC1766 = 0x0006,
            GEO_LCID = 0x0007,
            GEO_FRIENDLYNAME = 0x0008,
            GEO_OFFICIALNAME = 0x0009,
            GEO_TIMEZONES = 0x000A,
            GEO_OFFICIALLANGUAGES = 0x000B
        }
    
        [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
        private extern static int GetGeoInfo(int geoId, SYSGEOTYPE geoType, string lpGeoData, int cchData, int language);
    

    但是,请注意,地理位置和地区之间可能没有 1:1 的对应关系。

    【讨论】:

    • 那么,GEO_ISO2 基本上是,通常是 iso 3166 代码吗?那么我可以用它来做新的 RegionInfo(code) 吗?
    • @Berryl - 一般来说是的,但它可能不适用于每个地理位置。
    猜你喜欢
    • 1970-01-01
    • 2019-06-03
    • 1970-01-01
    • 2016-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-23
    • 2020-07-21
    相关资源
    最近更新 更多