【问题标题】:classic asp FormatNumber displays a special character (Â) as the thousand seperator经典的 asp Format Number 显示一个特殊字符 (Â) 作为千位分隔符
【发布时间】:2011-11-18 12:05:06
【问题描述】:

我对 Classic ASP 中的 FormatNumber 函数有疑问。

当使用这个重载时 FormatNumber(cdbl(aRecs(3, i)) , 0, 0, 0),数字看起来很好,例如160 703

但是,当使用此重载时 FormatNumber(aRecs(3, i),0,false,false,true),"0"),数字以特殊字符作为千位分隔符出现,例如160×703

N/B:aRecs(3, i) 指的是从记录集(从数据库)中检索的值。

在生产服务器上(Windows Server 2008)一切正常,但是,当我设置开发环境(Windows 7 和 Windows Server 2008)时,我遇到了这个问题。我尝试在我的区域设置中设置一千个分隔符,但无济于事

我错过了什么吗?此外,这是一个非常古老的项目,我无法修改所有调用此函数的事件。

【问题讨论】:

  • 这可能是一个编码问题 - 您在页面上使用什么字符编码?窗户1251? UTF-8?
  • 是的,显然是因为编码,我已经应用了下面的修复,我猜这个行为是因为编码没有明确设置,可能会默认为服务器编码。除了下面建议的修复之外,我在 IIS 服务器上没有找到可以设置编码的任何地方。

标签: asp-classic


【解决方案1】:

将这行代码添加到页面顶部:-

 Response.CharSet = "UTF-8"

此问题通常是响应代码页(在您的情况下我猜是 65001)与内容类型标头中的 CharSet 值不匹配的结果。通常不会传递 CharSet 值,因此浏览器会猜测,通常使用当前用户区域设置来确定代码页。

【讨论】:

  • thanx Anthony,很遗憾,我无法投票赞成您的回答,因为我没有足够的声誉……您的回答很到位,解决了我的麻烦。我已将此行添加到网站所有页面上包含的文件中,因此它现在适用于我网站中的所有页面。
【解决方案2】:

使用页面顶部的这两行来纠正这种情况:

<%@ Language=VBScript codepage="65001"%>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

【讨论】:

    猜你喜欢
    • 2012-10-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-21
    • 1970-01-01
    • 1970-01-01
    • 2011-11-10
    • 2022-08-18
    • 2018-06-22
    相关资源
    最近更新 更多