我在经典 asp 网站中遇到西班牙字符问题。用户可以在 aspx 页面上的表单中提交他们的姓名/地址。然后,aspx 页面将 ajax post 发送到经典的 asp 页面,它所做的所有操作都存储在我们的 Sql 2008 DB 中。我可以在数据库中看到该字符存储不正确。例如,名字看起来像
Mª
,而它应该是 Mª
。
当我读取该数据并将其显示在文本框中时,它仍然显示
Mª
。
我尝试过的事情:
<%@ Language=VBScript codepage=65001 %>
<% Response.Charset="UTF-8" %>
还有其他想法吗?我需要先返回数据库并修复字符还是可以在读取字符并显示它们时完成此操作?
当开始在 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">
你看到的是UTF-8。 它可能正是应该的样子,问题是您用于查看的工具没有正确处理 UTF-8,要么是因为它不能,要么是因为它配置不正确。
在页面中始终对 HTML 中的每个文本使用
Server.HTMLEncode
。
请记住,在 ASP 中,ASP 文件内的字符是(或可能是)操作系统中的当前默认字符。例如:Windows-1252 或 CP-1252(代码页 1252)。
所以在代码中的常量中你应该这样写:
text = "M" & Chr(170) 'M + feminine ordinal sign
所有源文件可能仅包含 ASCII 字符。
在所有情况下,您都应该以这种方式使用 HTML 编码:
<input type="text" value="<%= Server.HTMLEncode(text & "") %>">
结果:
<input type="text" value="Mª">