asp-classic - 在经典asp中将utf-8转换为iso-8859-1

标签 asp-classic character-encoding ado serverxmlhttp

我的网站现在完全在 UTF-8 中工作,但为了使用 serverXMLHTTP 发送 SMS,我需要在发送之前将我的消息从 UTF-8 转换为 ISO-8859-1。

情况与此类似:

a.asp:

<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head><body>
<form method="post" action="b.asp">
<input type text name="message" value="æøå and ÆØÅ"><br>
<input type=submit>
</body>

然后b.asp
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
</head><body>
<%=konvert(request("message"))%><br>
</body>
<%
Function Konvert(sIn)
    Dim oIn : Set oIn = CreateObject("ADODB.Stream")
    oIn.Open
    oIn.CharSet = "UTF-8" 
    oIn.WriteText sIn
    oIn.Position = 0
    oIn.CharSet = "ISO-8859-1"
    Konvert = oIn.ReadText
    oIn.Close
End Function
%>

在这个展示中,我希望在 b.asp 中看到与我发送 a.asp 相同的字符串
但我得到的是:
æøå and ÆØÅ

有任何想法吗?

最佳答案

您处理客户端编码而不是服务器端

至于 ASP 如何处理服务器请求,这实际上取决于您的服务器配置。

处理 IIS 如何编码响应有两个部分;

  • 什么是编码为( UTF-8Windows-1252Western European (ISO) 等)的物理文件(b.asp)。只要处理代码页与 ASP 文件匹配,这应该不是问题(我个人更喜欢使用 UTF-8,而在较新的 IIS 版本中,这是默认设置)。
  • ASP 页面期望被处理为什么 CodePage? ( <%@ CodePage %> 属性)

  • 您可以在测试页面中使用下面的代码片段来计算您的服务器默认值;

    <%
    'Check how the server is currently encoding responses.
    
    Call Response.Write(Response.Charset)
    Call Response.Write(Response.CodePage)
    %>
    

    为了使下面的示例正常工作,b.asp 必须保存为 65001 (UTF-8),如果您使用的是 Visual Studio,则可以使用“高级保存选项”对话框(默认情况下未在菜单上显示)来完成使用自定义菜单选项添加)。

    <%@Language="VBScript" CodePage = 65001 %>
    <% 
    'IIS should process this page as 65001 (UTF-8), responses should be 
    'treated as 28591 (ISO-8859-1).
    
    Response.CharSet = "ISO-8859-1"
    Response.CodePage = 28591
    %>
    

    关于asp-classic - 在经典asp中将utf-8转换为iso-8859-1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17677180/

    相关文章:

    error-handling - 经典ASP-错误捕获

    jquery - 是否可以使用 BackLoad 和 JQuery File Uploader 以编程方式/动态确定缩略图的大小

    asp-classic - IIS 6.0,经典ASP详细错误消息

    php - 阿拉伯字符在 DOMPDF 中不起作用

    delphi - 关于连接错误: override default?的TADOQuery/TADOConnection行为

    sql - 公用表表达式错误

    asp-classic - 在 VBScript 中检查 NULL 时出错

    java - Jsoup - 使用字符集 iso-8859-1 解析 HTML 文件

    Java - 从混合了 UTF-8 和非 UTF-8 字符的字符串中准确计算 60 个字符

    delphi - 在 Delphi 中无法找到 Trapping ADO Provider 错误