【问题标题】:UrlEncoding and Response.Redirect with %20 and +UrlEncoding 和 Response.Redirect 使用 %20 和 +
【发布时间】:2012-03-15 19:26:55
【问题描述】:

我正在尝试在 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”的名称可能会更好。但我正在与第三方软件等集成旧数据,并且由于遗留原因,它无法更改。

我在另一个原版网站上试过这个,但我没有收到问题,所以我不禁想知道它是全局设置还是我错过或没有听说过的东西。任何帮助将不胜感激

谢谢

【问题讨论】:

  • 您在页面源代码中看到了什么 - %20+
  • 页面来源?抱歉,您把我弄丢了,它是浏览器地址,您是说重定向到达服务器后的原始 url 是什么?

标签: asp.net urlencode response.redirect


【解决方案1】:

我想我不明白你不喜欢的编码是什么---

+ 是保留字符。因此,即使您用 + 替换空格,+ 也会被替换为 % 代码。无论如何,“”应该替换为 %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,但如果浏览器不想这样做,您最终可能会得到不同的空格和特殊字符编码。

【讨论】:

  • 我没有个人问题,但是查看 url 的第三方产品需要使用 %20 而不是 +
  • 另一种可能的解决方案:我从这个问题中得到的 response.addheader("Location",server.url encode("string")):stackoverflow.com/questions/4765453/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-25
  • 1970-01-01
  • 1970-01-01
  • 2014-01-29
相关资源
最近更新 更多