【问题标题】:Diamond character with question mark in classic ASP经典 ASP 中带问号的菱形字符
【发布时间】:2015-02-12 14:11:04
【问题描述】:

我正在使用经典的 asp 和 IIS7 进行开发。

当我在文本框中输入带有特殊字符 (£) 的文本并提交时。服务器端代码接收到的特殊字符变为带有问号的菱形符号。

已包含以下编码

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

在 asp 文件中。

我也尝试使用“在没有 BOM 的 UTF-8 中编码”格式保存文件

而部署在开发服务器上的相同文件可以正常工作。特殊字符 (£) 在服务器端代码中保持不变。

我是否缺少一些 IIS7 设置。

【问题讨论】:

  • 您告诉浏览器输出iso-8859-1,但您将文件保存为UTF-8,您告诉ASP 将文件处理为什么? &lt;%@ CodePage = ? %&gt;??目前,菱形符号表示编码不匹配,即预期内容与发送内容之间的不匹配。
  • 此页面不包含 CodePage 指令
  • 在这种情况下,IIS 默认为该 Web 应用程序的 ASP 设置是什么? (我猜 65001 是 UTF-8)。
  • 我在 IIS7 的哪个位置查找此设置?
  • 这可能会有所帮助,这不是我第一次回答这个问题 - SO - convert utf-8 to iso-8859-1 in classic asp

标签: iis encoding asp-classic


【解决方案1】:

有时,您可能会看到一个问号 (?) 字符或一个字符应该出现的框。

代码页转换问题

当一个字符被问号 (?) 字符替换时,这表明发生了代码页转换问题。问号 (?) 是代码页转换的默认字符,基本上意味着操作系统不知道如何处理和转换字符值。它用问号 (?) 替换字符值。这可能意味着该字符的代码页值无效,或者未安装转换所需的代码页。

字体转换问题

当一个字符被一个方框替换时,这表明出现了字体转换问题。当客户端没有安装正确的字体以正确显示此字符时,会在客户端发生这种情况。例如,当一个字符来自日文字符集,并且客户端没有安装日文字体时,日文字符显示为一个框。

【讨论】:

  • 不,这是一些间歇性问题,只在一台机器上发生过,真的很奇怪......
  • 您是否尝试按照我在chat 中的建议设置Response.CharSet = "ISO-8859-1"Response.CodePage = 28591
  • 问题是,unicode 字符在系统上工作而无需更改代码。
  • 是的,但你没有抓住重点。代码应该有一些东西告诉浏览器期望什么编码,没有它浏览器必须做出“最佳猜测”。这可能因浏览器和操作系统而异。它适用于一个的事实并不意味着它会适用于另一个,直到您修复正在做出的假设。在假设您已涵盖所有基础之前,至少对其进行测试以查看问题是否消失。
【解决方案2】:

在每个页面的 head 部分中定义它

META http-equiv=Content-Type content="text/html; charset=iso-8859-1

在我这样做之前,它被设置为:

元字符集=utf-8

哪个让我留下了?在菱形内表示版权符号等字符。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-19
    • 1970-01-01
    相关资源
    最近更新 更多