【问题标题】:Odd Culture behaviour on ASP.Net formsASP.Net 表单上的奇怪文化行为
【发布时间】:2015-03-30 18:52:24
【问题描述】:

基于此代码(取自/修改自 Microsoft 网站)...

int i = 100;
string op = "";

// Creates/Displays a CultureInfo for English in Belize.
CultureInfo bz = new CultureInfo("en-BZ");
op += (i.ToString("c", bz)) + "<br/>";

// Creates/Displays CultureInfo for English in GB.
CultureInfo gb = new CultureInfo("en-GB");
op += (i.ToString("c", gb)) + "<br/>";

// Creates/Displays a CultureInfo for English in the U.S.
CultureInfo us = new CultureInfo("en-US");
op += (i.ToString("c", us)) + "<br/>";

// Creates/Displays a CultureInfo for Danish in Denmark.
CultureInfo dk = new CultureInfo("da-DK");
op += (i.ToString("c", dk)) + "<br/>";

litOutput.Text = op;

请任何人解释为什么这是我得到的输出..(注意第三个,据说是 en-US)

BZ$100.00
£100.00
100,00 €
kr. 100,00

..以及我需要做些什么来解决它。最近我认为有人在服务器上“玩”后才出现问题。

更新/附加信息

如果我在服务器上的独立应用程序中运行相同的代码,我会得到美国文化的预期结果,只有当代码在 ASPNet 中运行时,事情才会变得奇怪。

TIA。

【问题讨论】:

  • 如果有人在搞乱服务器的文化内容,我可能会放弃并从新服务器或新图像重新开始。谁知道他们还搞砸了什么……
  • 不幸的是,我们有点“锁定”——不是我们选择的主机
  • 我没有得到与您相同的结果,但我的默认文化是 en-US。服务器上的文化设置是什么?
  • 我的猜测是服务器上的货币显示设置是自定义的,而不是仅仅更改默认文化。
  • 我已经更新了我的帖子。如果我将代码作为控制台应用程序运行,我会得到正确的响应(即 100.00 美元)

标签: c# asp.net webforms culture


【解决方案1】:

经过几个小时的搜索,一个接一个地阅读 MS 页面,我终于在注册表中找到了答案。正如最初认为的那样,有人一直在修补。

HKEY_USERS/.DEFAULT/Control Panel/International 下的默认设置已更改,因此国家/地区代码/名称/ID 均指向美国,但格式为欧洲。

将这些替换为正确的值(通过将国家/地区替换为正确的值,或将格式更改为美国风格)解决了问题。

感谢您的帮助。希望这个答案对其他人有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多