【问题标题】:classic asp character encoding经典的asp字符编码
【发布时间】:2012-08-22 23:40:41
【问题描述】:

我在一个经典的 asp 网站中遇到了西班牙语字符的问题。用户可以在 aspx 页面上以表单形式提交他们的姓名/地址。然后,aspx 页面将 ajax 发布到经典的 asp 页面,它所做的一切都存储在我们的 Sql 2008 DB 中。我可以在数据库中看到该字符未正确存储。例如,名字看起来像Mª,它应该是

当我读取该数据并将其显示在文本框中时,它仍然显示Mª

我尝试过的事情:

  • <%@ Language=VBScript codepage=65001 %> <% Response.Charset="UTF-8" %>
  • 将文件编码为 UTF-8(使用 notepad++)

还有其他想法吗?我是否需要先返回数据库并修复字符,还是可以在读取字符并显示它们时完成?

【问题讨论】:

  • 您在用于接收表单 POST 的文件以及包含原始表单的文件中都发布了该代码吗?您使用 GET 或 POST 作为表单方法吗?您使用的是什么数据库引擎?你读过这个答案吗:stackoverflow.com/a/920405/17516
  • 表单在一个 aspx 页面上,它向一个经典的 asp 页面发送 ajax 帖子,将数据保存在数据库中。我查过了,这个asp页面里面没有编码信息。
  • 我能够使用您提供的帖子中的代码片段,它似乎可以正确转换字符以供显示。
  • k 这样您就可以修复数据库中的损坏,但您还需要找到损坏的来源并修复它。开始的地方是阅读我上面提出的每一个问题,并仔细逐一回答。

标签: encoding asp-classic utf-8 character-encoding vbscript


【解决方案1】:

我在 ASP 上开始使用 utf-8 时遇到了同样的问题,发现 session.CodePage 有所作为。在经典的 ASP 页面中,总是首先进行 ASP 声明,以确保所有页面都使用 UTF-8 来表示数据、表单、asp 代码、接收或发送的数据。

<%@Language=VBScript CodePage = 65001%>
<%
Session.CodePage = 65001
Response.charset ="utf-8"
Session.LCID     = 1033 'en-US
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

【讨论】:

  • 谢谢,这正是我最终添加解决它的原因,同时需要清理错误插入的数据。
  • Session_OnStart() 中添加一次会话内容不是更有意义吗?
【解决方案2】:

您正在查看的是 UTF-8。这可能正是它应该的样子,问题是您用于查看的工具没有正确处理 UTF-8,要么是因为它不能,要么是因为它没有正确配置。

【讨论】:

  • “工具”是 Firefox、IE 或 chrome 中的 asp 页面。
  • 那么页面会被浏览器解释为 UTF-8 吗?
  • 如何检查,以及如何对其他用户强制执行?我已经设置了代码页和响应字符集。
  • 至少在 Firefox 中,它会在页面属性或类似的地方告诉你。检查 HTTP 响应的 Content-Type: 标头;如果您的 HTML 中没有合适的 http-equiv 元标记,请添加一个。
  • 好吧,这个例子中的工具是一个经典的 ASP 页面,,,所以如果数据是 UTF-8,那么应该有编码声明: Session.CodePage = 65001 Response.charset ="utf-8"不同的是,如果数据以另一种编码(如 Win-1252)进行编码,则声明必须与该编码相对应。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多