ディーバ Blog

大阪発 C#の会社、株式会社ディーバの Blog です。

C# で国名の一覧を取得・表示する

CultureInfo, RegionInfo を使って国名(台湾・香港なども含む)の一覧を取得します。アプリで国籍の選択などに使えるかなと。

GetCultures でカルチャを取得し、LCID(ロケールID)プロパティを使って RegionInfo を生成します。Name プロパティが2文字のオブジェクトのみ使います。2文字の値は、ISO 3166 の国名コードです。2文字以外の値には “001” (世界)・"029" (カリブ)・"419" (ラテン アメリカ) があります。

var names = CultureInfo
    .GetCultures(CultureTypes.SpecificCultures)
    .Where(c => c.LCID != 4096 /* LOCALE_CUSTOM_UNSPECIFIED を除く */)
    .Select(c => new RegionInfo(c.LCID))
    .Where(r => r.Name.Length == 2)
    .Distinct()
    .OrderBy(r => r.DisplayName)
    .ToDictionary(r => r.Name, r => r.DisplayName);

Windows 10 で実行した結果です。139件ありました。

f:id:jz5_diva:20170120132840p:plain

すべての国が定義されているわけではないようです。CultureInfo.CreateSpecificCulture Method (String) (System.Globalization) の Remarks によると、Windows で定義されている一覧は [MS-LCID]: Appendix A: Product Behavior で参照できます。

参考として Wikipedia の 国の一覧 - Wikipedia では206ヶ国掲載されています。日本政府が承認した国家数は195ヶ国(日本除く)です。

他のサービスの国数も調べてみました。

  • Microsoft アカウントの国/地域は、254個
  • Google アカウントの国/地域は、255個
  • Tiwtter プロフィールの国は、155個と「世界中」