我正在处理一个较旧的经典 ASP 站点,并且有一个表单允许用户输入一些文本(进入多行文本框),如果他们添加一个 html 字符,如 ®(注册商标),它会正确插入它。但是当他们去编辑数据时,使用相同的表格,更新会在注册商标前添加一个随机的'Â'(圆角音符)。内容类型为 utf-8。
有任何想法吗?
感谢您随时提供此信息。它一直让我发疯。
-m
最佳答案
根本问题是 Response.Codepage 对 Form Posts 的影响。
当您将表单发送到指定内容编码为 UTF-8 的客户端时,浏览器将假定表单帖子的内容应以 UTF-8 编码发送。
现在,接收帖子的操作页面将(有点违反直觉)使用 的值。 Response.Codepage
通知它帖子中的字符是如何编码的。这并不明显,因为我们倾向于认为发送者的工作是定义其发送内容的编码。此外,认为与我们想要在响应中发送的内容的编码有关的属性与如何接收初始请求有关,这也不是自然而然的飞跃。在这种情况下确实如此。
发生的事情是您的表单发布了字符的 UTF-8 编码版本,但接收的页面没有将其 Response.Codepage 设置为 65001(UTF-8 代码页)。它可能设置为系统 OEM 代码页,如 1252。因此,字符的 UTF-8 编码被解释为两个单独的字符。
我对 ASP 中良好字符处理的建议是:-
这里重要的是,在您读取 ASP 页中的表单值之前,您需要确保将 Response.Codepage 设置为与发件人编码匹配的代码页,并且这不会自动发生。
关于asp-classic - 经典的 ASP gremlims,在使用 HTML 特殊字符时将 Â 插入到文本中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/350429/