代码之家  ›  专栏  ›  技术社区  ›  Chris

response.redirect url将querystrings中的空格编码为%20

  •  1
  • Chris  · 技术社区  · 14 年前

    response.redirect(“./blah.aspx”)。key=my value with spaces);。

    它将浏览器发送到:

    mysite/blah.aspx?key=my%20value%20with%20spaces
    

    现在我明白了为什么要这样做了——为了那些会让空间窒息的古代浏览器。但事实上,我想要的是有一个漂亮的URL,它有空格,而不是到处都有%的空格,因为它的工作原理是一样的。

    有什么方法可以阻止响应。重新定向urlen对我的空间进行编码吗?

    谢谢

    2 回复  |  直到 14 年前
        1
  •  3
  •   bevacqua    14 年前

    在重新定向之前,您可以用分数替换密钥中的空格,并在这样的事实发生后将它们“解码”为空格:

    string urlString = "./blah.aspx?key=my value with spaces";
    Response.Redirect(urlString.Replace(' ','-'));
    

    在抓取查询字符串的页面上:

    string queryKey = Request["key"].Replace('-',' ');
    

    (小心里面的空 Request["key"] here 尽管如此)

        2
  •  8
  •   Guffa    14 年前

    不能使用带有空格的有效URL,该空格字符在URL中实际上是非法的。

    无法做出响应。重定向方法避免对空格进行编码,它不是为创建非法的URL而设计的。

    推荐文章