ASP Response.Redirect不会URLEncode“+”签名

时间:2011-01-22 01:01:49

标签: asp-classic urlencode response.redirect

在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 进入你的浏览器并按下输入你将看到谷歌接受%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")重定向,但是escape和unescape函数支持UTF-8和ASCII(0-127)的某些部分,但是不支持高ANSI(128-) 255)字符,特别是欧洲重音字符。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

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

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

server.urlencode仍然存在