Asp classic 经典的ASP小精灵,获得一个Â;每当使用HTML特殊字符时插入到文本中

Asp classic 经典的ASP小精灵,获得一个Â;每当使用HTML特殊字符时插入到文本中,asp-classic,utf-8,Asp Classic,Utf 8,我在一个旧的经典ASP网站上工作,有一个表单允许用户输入一些文本(进入多行文本框),如果他们添加了html字符,比如®(注册商标),它会正确插入。但是当他们使用相同的格式编辑数据时,更新会在注册商标前添加一个随机的“扬抑音”。内容类型为utf-8 有什么想法吗 谢谢你给我这个机会。这让我快发疯了。 -m我猜您使用的编辑器与UTF-8不兼容,正在将所有内容转换为ASCII 简单的答案是停止在HTML页面中使用特殊字符。版权符号应写成©或©根据我处理这个问题的经验,我发现这些字符经常

我在一个旧的经典ASP网站上工作,有一个表单允许用户输入一些文本(进入多行文本框),如果他们添加了html字符,比如®(注册商标),它会正确插入。但是当他们使用相同的格式编辑数据时,更新会在注册商标前添加一个随机的“扬抑音”。内容类型为utf-8

有什么想法吗

谢谢你给我这个机会。这让我快发疯了。
-m

我猜您使用的编辑器与UTF-8不兼容,正在将所有内容转换为ASCII


简单的答案是停止在HTML页面中使用特殊字符。版权符号应写成
©
©

根据我处理这个问题的经验,我发现这些字符经常出现,因为1)输入内容时用户使用的是非英语字符集(和键盘)(即西班牙语),2)内容未转换为UTF-8。您在正确的轨道上检查了标题中的内容类型,但是如果这种情况持续发生,您还必须通过转换器运行内容。许多年前,这个问题在经典ASP中给我带来了数小时的痛苦(我希望我仍然能够访问代码以提供进一步的帮助)。

是®存储为UTF-8,但显示为ASCII/ISO-8859-1/Windows-1252时的样子。使用
meta
标记不足以确保您的页面被用作UTF-8。您还需要在内容类型HTTP头中设置编码。此标头通常通过某些服务器范围的设置或编程方式设置

我不知道ASP,但这似乎是设置标题的方式:

这可能会提供更多信息:


如果您的数据存储在数据库中,您还需要确保数据也存储在UTF-8中,或者在存储和检索数据时进行转换。

根本的问题是响应.代码页对表单帖子的影响

当您向指定内容编码为UTF-8的客户端发送表单时,浏览器将假定表单帖子的内容应编码为UTF-8

现在,接收帖子的操作页面将使用
Response.Codepage
的值来通知帖子中的字符如何编码。这并不明显,因为我们倾向于认为发送者的工作是定义其发送内容的编码。而且,认为与我们希望在响应中发送的内容的编码相关的属性与初始请求的接收方式相关也不是一个自然的飞跃。在这种情况下是这样的

发生的情况是,您的表单正在发布字符的UTF-8编码版本,但接收到的页面没有响应。代码页设置为65001(UTF-8代码页)。它可能设置为SystemsOEM代码页,如1252。因此,字符的UTF-8编码被解释为两个单独的字符

我对ASP中良好字符处理的建议如下:-

  • 将所有页面另存为UTF-8

  • 请原谅这个诡辩,但它不能以ASCII格式读取文本,因为ASCII不支持重音字母或版权符号。它必须使用八位编码,如ISO-8859-1或windows-1252。我也必须插话说,上面的项目符号把我从不知多少个小时的顽固的自我厌恶中拯救出来™ 保存时不会粘住。我的第一次搜索得到了这个解决方案。非常感谢。