C# Response.redirect url将空间编码到QueryString中的%20

C# Response.redirect url将空间编码到QueryString中的%20,c#,asp.net,url,C#,Asp.net,Url,Response.Redirect(“./blah.aspx?key=my value加空格”) 它将浏览器发送到: mysite/blah.aspx?key=my%20value%20with%20spaces 现在我明白它为什么这么做了——为了那些会阻塞空间的古老浏览器。但实际上,我想要的是有一个漂亮的url,带有空格,而不是无处不在的%,因为它的工作原理是一样的 是否有某种方法可以停止response.redirect URL对我的空间进行编码 非常感谢在重定向之前,您始终可以将密钥中的

Response.Redirect(“./blah.aspx?key=my value加空格”)

它将浏览器发送到:

mysite/blah.aspx?key=my%20value%20with%20spaces
现在我明白它为什么这么做了——为了那些会阻塞空间的古老浏览器。但实际上,我想要的是有一个漂亮的url,带有空格,而不是无处不在的%,因为它的工作原理是一样的

是否有某种方法可以停止response.redirect URL对我的空间进行编码


非常感谢

在重定向之前,您始终可以将密钥中的空格替换为分数,然后再将其“解码”到空格中,如下所示:

string urlString = "./blah.aspx?key=my value with spaces";
Response.Redirect(urlString.Replace(' ','-'));
在抓取查询字符串的页面上:

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

(注意
Request[“key”]中的空值,这里是

您可以在重定向之前用分数替换键中的空格,然后在重定向之后再次将其“解码”到空格中,如下所示:

string urlString = "./blah.aspx?key=my value with spaces";
Response.Redirect(urlString.Replace(' ','-'));
在抓取查询字符串的页面上:

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

(注意此处的
请求[“key”]中的空值)

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


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

您不能使用空格创建有效的URL,在URL中空格字符实际上是非法的


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

所以您认为带有空格的URL“好看”吗?我建议你看看这个问题:看一看,它说“空格字符是不安全的,因为当URL被转录、排版或接受文字处理程序处理时,重要空格可能会消失,而不重要的空格可能会被引入。”-我真的不打算让我的URL通过文字处理器,我想没关系。你打算用URI做什么都不重要。URI是根据一个国际标准定义的,该标准必须预期它将用于各种用例(与在某些情况下通常使用的空格分隔列表相比,文字处理器在这里并不是最困难的情况)。因为有很多情况下空格根本不起作用,所以空格是不允许的。好的,别担心。我选择了用破折号替换空格的选项。所以你认为带空格的URL“好看”吗?我建议你看看这个问题:看一看,它说“空格字符是不安全的,因为当URL被转录、排版或接受文字处理程序处理时,重要空格可能会消失,而不重要的空格可能会被引入。”-我真的不打算让我的URL通过文字处理器,我想没关系。你打算用URI做什么都不重要。URI是根据一个国际标准定义的,该标准必须预期它将用于各种用例(与在某些情况下通常使用的空格分隔列表相比,文字处理器在这里并不是最困难的情况)。因为有很多情况下空格根本不起作用,所以空格是不允许的。好的,别担心。我选择了空格替换为破折号选项。+1。完全正确编码的存在是有原因的,为什么人们会试图反对它?我知道,你是对的,但这是一个内部网应用程序,我可以打破一些规则。你知道怎么做吗?我不认为这是可能的,在你的URL中有空格有那么重要吗?为什么不干脆用别的东西来代替它们呢,不管怎样,空格在URL中看起来都很可怕。只需使用下划线或连字符。您可以创建自己的重定向方法,该方法可以打破您想要的任何规则。它真正做的只是用重定向页面替换当前输出,并调用Response.End.+1。完全正确编码的存在是有原因的,为什么人们会试图反对它?我知道,你是对的,但这是一个内部网应用程序,我可以打破一些规则。你知道怎么做吗?我不认为这是可能的,在你的URL中有空格有那么重要吗?为什么不干脆用别的东西来代替它们呢,不管怎样,空格在URL中看起来都很可怕。只需使用下划线或连字符。您可以创建自己的重定向方法,该方法可以打破您想要的任何规则。它真正做的只是用重定向页面替换当前输出,并调用Response.End。