如何编码URL?

时间:2009-09-22 16:46:06

标签: c# asp.net

当我运行我的项目时,我得到了我想要编码URL的网址http://localhost:5973/PageToPageValuePass/Default.aspx,因为有时我需要在页面之间传输数据。当网址被编码时,它会提高可靠性。

Server.UrlEncode("http://www.google.com/c#");

我明白了,但是如何使用它来帮助我对网址进行编码?

4 个答案:

答案 0 :(得分:35)

如果你的编码部分是路径:

System.Uri.EscapeUriString("c#")

如果您的编码'参数':

String.Format( "http://something/?test={0}", System.Uri.EscapeDataString("c#") );

答案 1 :(得分:7)

试试这个

    ASP.NET中的
    Server.UrlEncode("http://www.google.com/c#");
    使用System.Web.dll

    在WinForms中的
  • HttpUtility.UrlEncode("http://www.google.com/c#");

答案 2 :(得分:3)

Url编码用于确保url中包含的特殊符号(很可能在查询字符串中)不会被错误地解释为在解析和处理url时使用的符号。例如,+符号用于表示URL中的空格。但是,如果您打算将+符号作为查询字符串的一部分,那么您需要在将该查询字符串发送到浏览器之前对其进行编码。

例如。想象一下,您已经编写了一个页面,该页面在查询字符串上接收数学等式并在页面上显示该等式。

网址可能是:http://yoursite.com/displayMath.aspx?equation=3+5

在这种情况下,+符号旨在成为等式中有意义的部分。但是,如果没有UrlEncode,它将被解释为表示空格。从接收页面上的查询字符串中读取此值将产生“3 5”,这不是预期的。

您可能希望首先对请求进行URL编码,而不是直接重定向到该网址。您可以编写以下代码:

string equation = "3+5";
string url = String.Format(@"http://yoursite.com/displayMath.aspx?equation={0}", equation);
string encodedUrl = Server.UrlEncode(url);
Response.Redirect(encodedUrl);

这将确保后续Request.Querystring["equation"]将完整地接收等式,因为任何特殊符号将首先被编码。

我不确定我是否了解编码网址的用例。如果您可以提供有关您要实现的目标的更多信息,我将尝试更全面地回答。现在我希望这些信息有用。

答案 3 :(得分:0)

假设您要创建一个包含某些参数的链接,您可以按如下方式使用它:

ASPX:

点击这里

代码背后的代码:

myLink.Href = Page.ResolveClientUrl("~/MyPage.aspx") + "?id=" + 
   Server.UrlEncode("put here what ever you want to url encode"); 

或者像你的问题一样:

myLink.Href = "http://www.google.com/")+Server.UrlEncode("C#");

这将放入html:

<a id="myLink" runat="server" target="_self" href="http://www.google.com/c+c%23">