如何转义url编码?

时间:2013-06-21 18:08:17

标签: c# asp.net url decode encode

我正在创建一个链接,用于创建包含URL参数链接的URL参数。 问题是我有这样的链接

http://mydomain/_layouts/test/MyLinksEdit.aspx?auto=true&source=
    http://vtss-sp2010hh:8088/AdminReports/helloworld.aspx?pdfid=193
&url=http://vtss-sp2010hh:8088/AdminReports/helloworld.aspx?pdfid=193%26pdfname=5.6%20Upgrade
&title=5.6 Upgrade

此链接转到书签添加页面,读取这些参数。

auto是否要阅读以下参数

source是您添加或取消

后的去处

url是书签链接

title是书签的名称

urltitle的值会输入2个字段。然后,用户必须点击savecancel。 问题是当书签页面将值输入字段时,它将解码它们。 然后,如果您尝试保存,则不会让您保存,因为pdfname值中的url值中有空格。它需要链接没有任何空格。所以基本上,我想要它,以便在它进入字段后,它仍然是%20而不是空格。

sourceautotitle没有问题,只有url ...

有没有办法解决这个问题?就像我可以用于%20的特殊转义字符?

注意:我无法修改书签页。

我正在使用c#/ asp.net创建链接并转到它。

由于

3 个答案:

答案 0 :(得分:17)

从.NET Framework 4.5开始,您可以使用WebUtility.UrlEncode

它位于System.dll,因此不需要任何其他参考。

Uri.EscapeUriString

不同,它正确转义了网址的字符

Uri.EscapeDataString不同,它对字符串的长度没有任何限制,因此它可以用于POST请求

 System.Net.WebUtility.UrlEncode(urlText)

另一种选择是

 System.Uri.EscapeDataString() 

答案 1 :(得分:2)

Uri.EscapeDataString()和Uri.UnescapeDataString()与UrlEncode / UrlDecode方法相比是安全的,并且在解码时不会将加号转换为空格。

其他用户的一些详细信息:http://geekswithblogs.net/mikehuguet/archive/2009/08/16/134123.aspx

答案 2 :(得分:0)

在递交网址之前,只需使用HttpUtilty的UrlEncode方法;

 string encoded = HttpUtility.UrlEncode(url);