【发布时间】: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