带有%20和+的UrlEncoding和Response.Redirect

时间:2012-03-15 19:26:56

标签: asp.net urlencode response.redirect

我正在尝试在asp.net中执行以下任务

Response.Redirect("/?confim&name=John%20Smith");

执行此代码时,我在浏览器地址中看到的URL是 “www.mysite.com/?confirm&name=John+Smith”。

但我想要的是“www.mysite.com/?confirm&name=John%20Smith”。

我知道%20和+代替了一个空格,我知道这个名字可能更像“John_Smith”。但我正在使用旧数据与第三方软件等集成,并且由于遗留原因它无法改变。

我在另一个香草网站尝试了这个,我没有收到问题,所以我无法帮助,但不知道它是一个全球性的环境,还是我遗漏或者没有听说过的东西。任何帮助将不胜感激

由于

威尔

1 个答案:

答案 0 :(得分:0)

我认为我不明白你不喜欢的编码怎么样---

+是保留字符。因此,即使用+替换空格,+也将替换为%代码。并且“”无论如何应该用%20替换,如果不是,你可以使用HttpServerUtility.UrlEncode方法。如果这还不行,那就试试这个黑客:

string someUrlEncodedMyWay = "www.mysite.com/?confirm&name=John%20Smith";
Response.Write("<script type=\"text/javascript\">");

Response.Write("window.location = \"" + someUrlEncodedMyWay + "\"");

Response.Write("</script>");

这将允许您告诉浏览器使用时髦的URL,但如果浏览器不想这样做,您最终可能会使用不同的空格和特殊字符编码。