? win 10 Culture is not supported._编程/源码/二次开发_阿里进销存_土豪群发红包微信号论坛_任我行土豪群发红包微信号会员俱乐部 - 土豪群发红包微信号
返回列表 发新帖

win 10 Culture is not supported.

[复制链接]
3
回复
90
查看
打印 上一主题 下一主题

19

主题

35

帖子

86

积分

注册会员

Rank: 2

积分
86
1#
跳转到指定楼层
发表于 2019-4-15 01:28:50 | 只看该作者 回帖奖励 |倒序浏览 |?阅读模式
System.Globalization.CultureNotFoundException: Culture is not supported.
Due to my previous laptop (Windows 7) was broken, so I have purchased a new laptop with Windows 8 installed.
Just found that, when I tried to use an application, it prompted the following error message. However, this application I was used to use in my previous Win 7 laptop without any problem. Since I have no idea for what causing this problem, and definitely no idea on how to resolve it.
Very much appreciated for any one of the professional can help me out of this problem urgently. Thanks!
Below are the error message that I copied from my new laptop.
Server Error in '/' Application.

Culture is not supported.
Parameter name: name
zh-Hant-HK is an
invalid culture identifier.
Description:
An unhandled exception occurred during the execution of the current web
request. Please review the stack trace for more information about the error and
where it originated in the code.

Exception Details:
System.Globalization.CultureNotFoundException: Culture is not
supported.
Parameter name: name
zh-Hant-HK is an invalid culture
identifier.

Source Error:
An unhandled exception was generated during the execution of the
current web request. Information regarding the origin and location of the
exception can be identified using the exception stack trace below.

Stack Trace:
[CultureNotFoundException: Culture is not supported.Parameter name: namezh-Hant-HK is an invalid culture identifier.]? ?System.Globalization.CultureInfo..ctor(String name, Boolean useUserOverride) +9358573? ?ASP.global_asax.Session_Start(Object sender, EventArgs e) +455? ?System.Web.SessionState.SessionStateModule.RaiseOnStart(EventArgs e) +9026339? ?System.Web.SessionState.SessionStateModule.CompleteAcquireState() +148? ?System.Web.SessionState.SessionStateModule.BeginAcquireState(Object source, EventArgs e, AsyncCallback cb, Object extraData) +561? ?System.Web.AsyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +96? ?System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +184


19

主题

35

帖子

86

积分

注册会员

Rank: 2

积分
86
2#
?楼主| 发表于 2019-4-15 01:29:23 | 只看该作者
Microsoft Edge或IE11打开某些网站报错:Culture name ‘zh-hans-cn’ is not supported.
Microsoft Edge或IE11打开某些网站报错:Culture name ‘zh-hans-cn’ is not supported.
参考 ASP.net2.0多国语言系网站与Windows8的IE10语系设定:http://blog.miniasp.com/post/2012/03/11/ASPNET-20-e5a49ae59c8be8aa9ee7b3bbe7b6b2e7ab99e88887-Windows-8-e79a84-IE10-e8aa9ee7b3bbe8a8ade5ae9a.aspx
具体设定看以下设置:
http://blog.miniasp.com/post/2012/09/02/How-to-Change-IE10-Windows-8-Language-Preference-to-zh-TW.aspx
Windows10下的设置:
  • Win+R组合键,输入control,回车;
  • 打开控制面板后,找Language,点击进去;(Control Panel\All Control Panel Items\Language)
  • 点击左边Advanced Settings,进入高级选项;
  • Language for web content下面,选择这个项前面的复选框:Don’t let websites access my language list. The language of my date, time and number formatting will be used instead.??,保存退出。
  • 然后再去访问网站,发现不会报:Culture name ‘zh-hans-cn’ is not supported. 这个错了。



19

主题

35

帖子

86

积分

注册会员

Rank: 2

积分
86
3#
?楼主| 发表于 2019-4-15 01:30:14 | 只看该作者
ASP.NET 2.0 多国语系网站与 Windows 8 的 IE10 语系设定
前天将我的 Windows 8 安装了简体中文的 Language pack (语言套件),设定上去後连到我的部落格网站立刻出现严重的例外错误,因此注意到从 Windows Vista / .NET 3.0+ 开始针对繁体中文简体中文的 Language Tag 已经都改用 IETF 的标准表示字串,原本我们常用 zh-CHT 代表繁体中文,尔後都会改用 zh-Hant 来表示,若是简体中文则是 zh-Hans。然而重点是 ASP.NET 2.0 并不支援读取繁体中文zh-Hant简体中文zh-Hans,只要尝试读取就会立刻引发例外状况,这是各位开发人员应该注意的地方。
首先,我必须声明这样的改变完全是为了因应 IETF 标准的变化所致,zh-Hant / zh-Hans 这样的 Language Tag 是从 2006 年才被定义出来(RFC 4646),在这之前我们要表示不含地区特性的中文,都会采用 zh-CHT 或 zh-CHS,然而之後才被定义成 zh-Hant / zh-Hans。
我们从 IE9 的「语言喜好设定」的画面来看,如下图示,通常台湾这边的预设语言都会是 中文 (繁体,台湾) [zh-TW],当你新增语言的时候有个选项叫做 中文 (繁体) [zh-Hant],两者的差异就在於 zh-TW 是含有地区特性的 Language Tag,而 zh-Hant 为通用於「中文繁体」的语系,并没有区分台湾、香港或澳门之间的文化差异。
若用 Fiddler 来看从浏览器送出的 Accept-Language 标头,可以发现他送出的 Language Tag 是 zh-TW
而 ASP.NET 的多国语系功能支援,就是依赖这个 HTTP Header (Accept-Language) 的值来判断浏览器的语系,藉此送出不同语系资源的内容。由於我的部落格有内建多国语系功能,前天将我的 Windows 8 Consumer Preview 安装了简体中文的语言套件(Language pack),设定上去後连到我的部落格网站立刻出现严重的例外错误:
我查了一下 事件检视器 (Event Log),得到以下错误讯息:
  • Exception type: NotSupportedException
  • Exception message: Culture 'zh-Hant' is a neutral culture. It cannot be used in formatting and parsing and therefore cannot be set as the thread's current culture.
  • Stack trace:
    at System.Globalization.CultureInfo.CheckNeutral(CultureInfo culture)
    at System.Threading.Thread.set_CurrentCulture(CultureInfo value)
    at System.Web.HttpApplication.ThreadContext.SetRequestLevelCulture(HttpContext context)
    at System.Web.HttpApplication.ThreadContext.Enter(Boolean setImpersonationContext)
    at System.Web.HttpApplication.OnThreadEnterPrivate(Boolean setImpersonationContext)
    at System.Web.HttpApplication.PipelineStepManager.ResumeSteps(Exception error)
    at System.Web.HttpApplication.BeginProcessRequestNotification(HttpContext context, AsyncCallback cb)
    at System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context)

看到这个错误很直觉的会想到应该是多国语系的地方出了问题,因此我就在我的 Windows 8 主机安装 Fiddler 来分析我从 Windows 8 的 IE10 到底送出了什麽 Accept-Language 内容过去,如下图示:
备注:你也可以用 IE10 内建的开发者工具进行 HTTP 封包分析。
果不其然,IE10 送出的 Language Tag 并不是常见的 zh-TW 而是 zh-Hant,这个例外并不是网站本身程式所造成的,而是 ASP.NET 在 自动判断 文化特行的时候发生了错误。下图我列出了我网站 web.config 所列出的 设定值,造成错误的地方正是如图箭头处所指出的 culture="auto" 设定。
解决办法也很简单,就是是不要自动判断 culture 的文化特性将该属性移除即可
请注意:设定 uiCulture="auto" 一样可以让全域资源档区域资源档正常运作,所以大部分情况下是不会有问题的,这里的 culture 主要是针对数字、货币、时间、日期等地区特性进行判断。
而我刚刚也针对 ASP.NET 2.0 , 3.5 , 3.5 SP1 , 4.0 进行测试,发现要 ASP.NET 4.0 之後才不会出现例外状况,所以如果你的 ASP.NET 应用程式需要针对数字、货币、时间、日期等地区特性进行自动判断,恐怕需要在 Global.asax 里多写程式额外判断才行,相关范例可参考我的另一篇文章【如何让 ASP.NET 依据浏览器指定的语系自动选用资源档】。
这问题也许只会出现在 Windows 8 Consumer Preview 这个版本里,因为目前这一版的 IE10 并无法选取内含地区特性的语系,所以你并无法选择 zh-TW 或 zh-CN 这些语系,这点实在让我非常困扰。
在 IE9 以前的语言喜好设定都可以很自由的个别设定,跟作业系统不会有直接的关联,但是在 Windows 8 里的 IE10 却跟作业系统绑的紧紧的,以下是在 IE10 设定不同语系的步骤图示:
1. 开启「网际网路选项」并点选「语言」按钮,目前这步骤跟之前的 IE 版本都一样:
2. 在设定语言喜好设定的介面,跟前一版已经不一样了,现在这一版变成要开启作业系统里的语言设定
3. 这时你会开启控制台里的语言设定,你必须在这里挑选语言,而且无法预览或选择含地区特性的语系,我也找不到任何可以选择 zh-TW 这个 Language Tag 的选项,希望在未来的 Windows 8 版本能够解决这个问题。
注:文化特性这部份真的有够错综复杂的 @_@

https://blog.miniasp.com/post/2012/03/11/ASPNET-20-e5a49ae59c8be8aa9ee7b3bbe7b6b2e7ab99e88887-Windows-8-e79a84-IE10-e8aa9ee7b3bbe8a8ade5ae9a
相关连结


19

主题

35

帖子

86

积分

注册会员

Rank: 2

积分
86
4#
?楼主| 发表于 2019-4-15 01:32:45 | 只看该作者
调整 IE10 与 Windows 8 语言喜好设定为旧版的 zh-TW 语系
今年三月刚开始用 Windows 8 预览版时曾经写过一篇【ASP.NET 2.0 多国语系网站与 Windows 8 的 IE10 语系设定】文章,该文章提到一个在 Windows 8 与 IE10 在针对语言喜好设定时的问题,除了可能会造成你现有 ASP.NET 多国语系应用程式发生例外状况外 (先前文章有提到解决办法),还有可能会导致许多网站显示错误的语言文字。最近安装了 Windows 8 RTM (正式版) 之後,终於被我找到解决办法。
备注:建议开发人员先看过【ASP.NET 2.0 多国语系网站与 Windows 8 的 IE10 语系设定】文章才会比较了解为什麽新版 IE10 与 Windows 8 可能会导致 ASP.NET 3.5 以前 (含) 会发生例外状况。
如果你要让特定一些网站不发生错误或原本该显示中文的网站突然都显示成英文的话,建议按照以下设定即可让原本浏览器送出的 Accept-Language 标头从 zh-Hant-TW 变回传统的 zh-TW 语系设定!
1. 开启 语言喜好设定 视窗
选取 [工具] / [网际网路选项] / [一般] 页签 / [语言],然後点击 [设定语言喜好设定] 按钮
2. 点击 [进阶设定]
3. 卷动到最下方,你会发现有个 适用於网路内容的语言 分类,里面有个 [不要让网站存取我的语言清单。将改用我的日期、时间和数字格是设定的语言。] 勾选项目,将其打勾後按下 [储存] 即可。

如此一来,如果你选择的日期、时间和数字格式是 中文 (繁体,台湾) 的话 (如下图示),那麽你的 IE10 浏览器所送出的 Accept-Language 标头就会跟 IE9 以前预设的语言设定 zh-TW 一样,许多相容性问题也会自然解决。
以下是从 Fiddler 中得到的佐证图示:

备注
IE9 以前的浏览器版本是可以选择多个语言的,也就是设定语言喜好设定时可以决定其语言优先顺序,在 IE10 也会依照系统的语言顺序送出正确的 Accept-Language 标头,如下范例:
Accept-Language: zh-Hant-TW,zh-Hant;q=0.8,en-US;q=0.5,en;q=0.3

但依照本篇文章所建议的设定有个小缺点,那就是这个选项会导致一次只能设定一个语言喜好,不能设定为多个,如下范例:
Accept-Language: zh-TW

不过此缺点似乎对许多人来说不会有多大影响,因为若伺服器端不支援 zh-TW 本来就会预设显示英文,除非一些比较特殊的网站。
标签 : Windows 8, IE10, language, zh-tw, zh-hant-tw, win8



发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表