【问题标题】:ASP Response.Redirect Does Not URLEncode "+" SignASP Response.Redirect 没有 URLEncode "+" 符号
【发布时间】:2011-01-22 01:01:49
【问题描述】:

在 IIS 5.0 之前,Response.Redirect 没有对您提供的字符串进行编码。对字符串进行 URLEncode 是您自己的责任。

在我们使用的 IIS 4.0 上

Response.Redirect Server.URLEncode("Page,One.asp")

在 IIS 5.0 中,我们刚开始使用

Response.Redirect("Page,One.asp")

所以新的 Response.Redirect 函数 URLEncodes 你的字符串,没有其他选择。

只有一个问题。我不能在字符串中传递“+”号。 执行Response.Redirect("sum=1+3") 时,您希望它对所有非字母数字字符进行编码,但接收页面上的“+”号会变成空格字符。

执行Response.Redirect(“sum=1%2B3”) 时,收到“404 Not Found”,因为服务器上不存在“sum%3D1%25B23”,因为 %2B 被编码了两次。

我希望将“+”编码为 %2B,以便接收页面了解它实际上是某些文本的一部分并显示它。

我举个例子: 当您键入 http://translate.google.com/#en|tr|1%2B2 进入您的浏览器并按回车键,您将看到 google 接受 %2B 并将其解码为 textarea 中的 +。

都没有

Response.Redirect("http://translate.google.com/#en|tr|1%2B2")

Response.Redirect("http://translate.google.com/#en|tr|1+2")

与我给出的示例中的效果相同。我只想重定向到那个页面。

还有另一种方法,例如首先对字符串进行编码,然后使用Response.Redirect unescape("Page%2COne%2Easp") 重定向,但转义和取消转义函数支持 UTF-8 和 ASCII (0-127) 的某些部分,但不支持高 ANSI (128-255)字符,尤其是欧洲重音字符。

有什么建议吗?

【问题讨论】:

    标签: asp-classic urlencode response.redirect


    【解决方案1】:

    所以新的 Response.Redirect 函数 URLEncodes 你的字符串,没有其他选择。

    你的意思是没有其他选择?

    server.urlencode 仍然存在

    【讨论】:

    • 谢谢。我找到了解决办法。你说的对! server.urlencode 仍然有效,但是当您想使用 response.redirect 进行重定向时,它会被编码或不再次编码。所以现在我使用 response.addheader("Location",server.url encode("string"))
    • 我在这里使用了 javascript 重定向:stackoverflow.com/questions/503093/…
    猜你喜欢
    • 1970-01-01
    • 2011-09-25
    • 2015-02-02
    • 2015-05-08
    • 2010-12-27
    • 1970-01-01
    • 2010-10-08
    • 2017-09-06
    • 1970-01-01
    相关资源
    最近更新 更多