ASP.NET全球化:Culture ="auto"页面指令,中性文化崩溃?

Gab*_*erg 7 asp.net globalization cultureinfo

我遇到了一个使用内置全球化设施的ASP.NET应用程序崩溃的情况.

在具有Culture ="auto"指令的ASP.NET页面上,具有中性文化作为其浏览器语言的用户(例如"zh-Hans")将产生以下异常:

文化'zh-Hans'是一种中性文化.它不能用于格式化和解析,因此不能设置为线程的当前文化.

在System.Globalization.CultureInfo.CheckNeutral(CultureInfo文化)的System.Threading.Thread.set_CurrentCulture(CultureInfo值)在System.Web.UI.Page.set_Culture(字符串值)的ASP.somePage_aspx .__ BuildControlTree(somePage_aspx __ctrl)在ASP .somePage_aspx.FrameworkInitialize()

有任何想法吗?输入Culture/UICulture参数的垃圾通常似乎被忽略,但是这种情况导致了未处理的异常.

mja*_*day 6

我遇到了同样的问题,把头撞到墙上一段时间后,我的鼻子下面找到了答案.

我遇到的问题是没有理解CurrentCultureCurrentUICulture之间的区别.不同之处在于CurrentCulture用于格式化日期,数字和执行排序,CurrentUICulture用于从资源中查找特定于文化的字符串.

我有一些看起来像的代码

return input.ToString("C", System.Globalization.CultureInfo.CurrentUICulture);
Run Code Online (Sandbox Code Playgroud)

应该是什么时候

return input.ToString("C", System.Globalization.CultureInfo.CurrentCulture);
Run Code Online (Sandbox Code Playgroud)

当您开始尝试使用非特定文化格式化特定于文化的项目时,您将获得System.NotSupportedException.


And*_*ott 3

首先,您可以考虑在 <%@ Page %> 声明中设置 UICulture="auto" 和 Culture="auto"。

现在,我在 .NET 4.0(测试版)安装中没有看到此重现,因此这可能是 .NET 3.5 中的产品错误。

这是了解中立文化以及 UICulture 和文化之间差异的绝佳资源:http://blogs.msdn.com/ddietric/archive/2008/02/05/yacvcp-yet-another-currentculture-vs-currentuiculture-post .aspx

希望这有帮助。