【问题标题】:Encoding / encryption in Classic ASP经典 ASP 中的编码/加密
【发布时间】:2012-09-20 03:03:24
【问题描述】:

我有两个网页,/default.asp 和 /mobile/default.asp。

两个页面都有以下声明:

meta http-equiv="Content-Type" content="text/html;charset=utf-8"

此外,两个页面都使用相同的包含文件,该文件提供对某些字符串加密和解密功能的访问。

我遇到的问题是,使用相同的字符集编码和相同的加密函数的两个页面在使用相同的密钥加密相同的字符串时会给出两个不同的字符串。

有什么想法吗?不正确的输出包含许多带有问号的黑色菱形。在 HEX 中,这些显示为 FD FF。

附加 - 加密数据存储在 SQL 数据库中,这就是我看到两种不同加密结果的方式。

因此,它具有相同的加密功能,输出位于同一个 SQL 数据库中,但来自两个不同的 asp 页面(但它们使用相同的字符集)。

【问题讨论】:

    标签: asp-classic character-encoding


    【解决方案1】:

    您可以将服务器端代码页设置为 UTF-8,如下所示:

    <%@ Language="VBSCRIPT" CODEPAGE="65001"%>
    

    <% 
    Response.CodePage = "utf-8"
    %>
    

    保持您的输出与您的代码页相同是很常见的。输出是您使用元标记设置的内容,也可以设置如下:

    <% 
    Response.Charset = "utf-8"
    %>
    

    【讨论】:

    • 无意义的输出流是否发生了变化?如果没有,请尝试查看您是否没有缓存问题...有时可能会很烦人...如果没有缓存,则双向加密的不同输出是否可能来自您的两个页面处于不同的水平...我的意思是,这可能会以任何方式影响您对加密的调用吗?不看就很难说。
    • 我会调查这些选项。干杯:o)
    【解决方案2】:

    经过大约 8 小时的反复试验,我终于找到了问题所在。

    ASP 页面本身已创建并保存为 UTF-8 编码,它需要是没有 BOM 的 UTF-8

    【讨论】:

    • 你让我感兴趣...我从来没有听说过。是你使用的编辑器造成的吗?那么实际的解决方案是什么?
    • 这是编辑器中的一个选项。我在 Notepad++ 中打开了这两个文件,并确认有效的页面是没有 BOM 的 UTF-8(在“编码”菜单中),而无效的页面只是 UTF-8。一旦我将其更改为没有 BOM 的 UTF-8,加密就开始正常工作。我希望我自己完全理解!!!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-16
    • 2011-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多