【问题标题】:Why is Thread.CurrentThread.CurrentCulture.Name showing "en-US" when my server's regional language is set to English (United Kingdom)当我的服务器的区域语言设置为英语(英国)时,为什么 Thread.CurrentThread.CurrentCulture.Name 显示“en-US”
【发布时间】:2011-05-19 09:38:47
【问题描述】:

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

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

关于现场环境 System.Threading.Thread.CurrentThread.CurrentUICulture.Name="en-US" System.Threading.Thread.CurrentThread.CurrentCulture.Name="zh-CN"

【问题讨论】:

    标签: c# asp.net datetime


    【解决方案1】:

    您检查过web.configglobalization 部分吗?

    你可以像这样声明性地设置它:

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

    见:http://msdn.microsoft.com/en-us/library/bz9tc508.aspx

    【讨论】:

    • 啊对,刚刚查了一下,没有。我在&lt;system.web&gt; 下添加了&lt;globalization culture="en-gb"/&gt;,现在它似乎工作正常。谢谢!
    【解决方案2】:

    区域设置适用于每个用户 - 因此您需要确保更改 IIS 在其下运行应用程序的任何用户的区域设置,例如网络服务。

    看起来许多其他人已经在寻找方法来做到这一点(谷歌“IIS 更改区域设置”)。看起来大多数人通过将设置侵入注册表的适当部分来实现它(在HKEY_USERS\IUSR-SID\Control Panel\International下)

    【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      【解决方案4】:

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

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

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

      问候

      【讨论】:

      • 这个问题是关于 ASP.NET,而不是 Java
      猜你喜欢
      • 1970-01-01
      • 2023-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多