为什么当我服务器的区域语言设置为英语(英国)时 Thread.CurrentThread.CurrentCulture.Name 显示"en-US"



我有一个Web应用程序,它可以在不同点让用户输入日期,并向用户显示日期。 调试时(以及站点在我们的测试和暂存服务器上运行时),日期格式以 dd/mm/yyyy 格式显示(使用 DateTime.ToShortDateString() 时)。 这些服务器(和我的开发环境在 Windows 区域选项下将"英语(英国)"设置为语言。到目前为止一切都很好。但是,在实时服务器上,日期以 mm/dd/yyyy 格式显示,即使实时服务器仍将语言设置为"英语(United Kindgom)"。 我已经看到这个问题,它解释了如何以特定格式解析日期,我已经知道如何以所需的字符串格式(DateTime.ToString("dd/MM/yyyy"))获取日期,但我想知道实时服务器上的其他操作系统设置导致这种差异?我也看过这个问题,但它似乎没有回答我的问题。

一些附加信息:关于开发、测试和过渡环境System.Threading.Thread.CurrentThread.CurrentUICulture.Name="en-US"System.Threading.Thread.CurrentThread.CurrentCulture.Name="en-GB"

在现场环境中System.Threading.Thread.CurrentThread.CurrentUICulture.Name="en-US"System.Threading.Thread.CurrentThread.CurrentCulture.Name="en-US"

您是否检查过web.configglobalization部分?

您可以像这样以声明方式设置它:

    <globalization uiCulture="en-GB" culture="en-GB" />

请参阅:http://msdn.microsoft.com/en-us/library/bz9tc508.aspx

区域设置按用户应用,因此您需要确保更改 IIS 运行应用程序的任何用户的区域设置,例如网络服务。

看起来许多其他人已经搜索了执行此操作的方法(谷歌"IIS 更改区域设置")。看起来大多数人通过将设置黑客入侵注册表的适当部分(在 HKEY_USERSIUSR-SIDControl PanelInternational 下)来实现它

当然,您可以在 Begin Request 事件中覆盖它。

但真正的根本原因是Windows没有本地化为英语。我们得到美式英语:en-GB 没有资源本地化,因此此设置避免了对 en-GB 资源立即回退到 en-US 的大量失败查找。

尝试检查实时服务器上使用的区域设置。 查看以下链接了解更多详情

http://www.java.com/en/download/help/locale.xml

您可能还需要检查浏览器中列出的语言优先级。

问候

最新更新