如何对URL进行编码?

11

运行我的项目后,我得到了URL:http://localhost:5973/PageToPageValuePass/Default.aspx。我想要对URL进行编码,因为有时我需要在页面之间传递数据。当URL被编码时,它可以增加可靠性。

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

我理解这点,但如何使用它来帮助我编码URL?


18
27个问题,却没有一个被采纳吗?你能够如此残忍。 - Matt
你能澄清一下你的问题吗?你是在问URL编码如何工作吗?还是要求一个可以处理它的库?或者你有一个特定的用例,它无法正常工作? - atk
4
我不认为形容词“残酷”适用于这里。更好的描述应该是“不体谅、粗鲁和不文明”!;-) - Cerebrus
4个回答

36
如果您需要编码路径的某些部分:
System.Uri.EscapeUriString("c#")
如果您的编码参数为“arguments”:
String.Format( "http://something/?test={0}", System.Uri.EscapeDataString("c#") );

.UrlEncode(...)对于带有主题或正文的mailto href很糟糕。+1 - it3xl

8

试一下这个

  • 在ASP.NET中
    Server.UrlEncode("http://www.google.com/c#");
  • in WinForms using System.Web.dll

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

3
Url编码用于确保url中包含的特殊符号(最可能在查询字符串中)不会被错误地解释为用于解析和处理url的符号。例如,+符号用于表示url中的空格。但是,如果您打算将+符号作为查询字符串的一部分,则需要在将其发送到浏览器之前对该查询字符串进行编码。
例如,假设您编写了一个页面,该页面在查询字符串上接收数学方程式并在页面上显示该方程式。
该url可能是:http://yoursite.com/displayMath.aspx?equation=3+5 在这种情况下,+符号旨在成为方程式的有意义的一部分。但是,如果没有UrlEncode,则会将其解释为表示空格。从接收页面的查询字符串读取此值将产生“3 5”,这不是预期的结果。
而不是直接重定向到该url,您将希望首先对请求进行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"]将完整地接收方程式,因为任何特殊符号都将首先被编码。
我不确定我是否理解您使用编码url的用例。如果您可以提供有关您要实现的更多信息,我将尽力回答。目前希望这些信息对您有用。

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">

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接