在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)字符,特别是欧洲重音字符。
有什么建议吗?
答案 0 :(得分:0)
所以新的Response.Redirect函数URLEncodes你的字符串,没有其他选项。
你的意思是没有其他选择吗?
server.urlencode仍然存在