RegionInfo在Windows 8.1应用程序中引发异常

时间:2014-09-25 15:20:51

标签: c# c#-4.0 globalization

我有以下代码:

 var culture = CultureInfo.CurrentUICulture;
 var regionInfo = new RegionInfo(culture.TwoLetterISOLanguageName);

如果CurrenUiCulture是带有ISOLanguageName的希伯来语,“他”会抛出异常

  

他不应该与中立文化相对应的地区名称;一个   需要特定的文化名称。

它适用于阿拉伯,西班牙,中国等其他文化......出了什么问题?

2 个答案:

答案 0 :(得分:2)

he是一个区域中立文化,如此代码所示

new CultureInfo("he").IsNeutralCulture; // true

RegionInfoint构造函数的方式将该异常用于我更容易理解的不同方式。

new RegionInfo(new CultureInfo("he").LCID) // Culture ID 13 (0x000D) is a neutral culture; a region cannot be created from it.

尝试使用更具体的文化名称,例如以色列he-il

new RegionInfo("he-il")不会抛出异常。

至于你的其他例子......

  • es既是西班牙语的区域中性语言代码,也是西班牙的国家/地区代码(RegionInfo also accepts a country code),这就是它的工作原理
  • ar既是阿拉伯语的区域中性语言代码,也是阿根廷的国家/地区代码(因此它“有效”,但您无法获得预期结果)
  • zh是中国人的区域中立代码,不应该有效。虽然如果你尝试了cn它可行,因为它是国家/地区代码。

答案 1 :(得分:1)

我认为您需要更具体的内容,例如:

regionInfo = new RegionInfo("en-US")

我不能说希伯来语需要哪个字符串文字,但是,因为我做了一些研究,我甚至找不到希伯来语的缩写“he”...我发现这个列表是有的没有希伯来语,但以色列的“IL”(这是.NET 3.5):

[http://msdn.microsoft.com/en-us/library/system.globalization.regioninfo%28v=VS.90%29.aspx][1]

希望这会对你有所帮助。