如何转义url编码?

ome*_*ega 11 c# asp.net url encode decode

我正在创建一个链接,用于创建包含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
Run Code Online (Sandbox Code Playgroud)

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

auto 是否要阅读以下参数

source 是你完成添加或取消后的去处

url 是书签链接

title 是书签的名称

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

有没有问题source,auto或者title,只是url...

有办法解决这个问题吗?就像我可以使用的特殊逃脱角色一样%20

注意:我无法修改书签页面.

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

谢谢

eri*_*cdc 20

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

它驻留在System.dll,因此它不需要任何其他引用.

它正确地转义了URL的字符,不像 Uri.EscapeUriString

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

 System.Net.WebUtility.UrlEncode(urlText)
Run Code Online (Sandbox Code Playgroud)

另一种选择是

 System.Uri.EscapeDataString() 
Run Code Online (Sandbox Code Playgroud)

  • 我试过这个http://msdn.microsoft.com/en-us/library/zttxte6w.aspx,但它只是用`+`编码它,它不起作用,因为书签页面解码了它.但我想通了,我刚刚做了,`string.replace("","%2520");`.通过这种方式,书签页面将`%25'解码为`%`,只剩下'%20`,这就是有效的. (2认同)

mmo*_*oll 6

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

来自另一个用户的一些细节:http : //geekswithblogs.net/mikehuguet/archive/2009/08/16/134123.aspx


eva*_*nal 4

UrlEncode只需在传递 url 之前使用 HttpUtilty 的方法即可;

 string encoded = HttpUtility.UrlEncode(url);
Run Code Online (Sandbox Code Playgroud)