如何转义url编码
本文关键字:url 编码 转义 何转义 | 更新日期: 2023-09-27 18:19:21
我正在创建一个链接,该链接创建包含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
是书签的名称
url
和title
的值被输入到2个字段中。然后用户必须点击save
或cancel
。问题是当书签页面在字段中输入值时,它将对它们进行解码。然后,如果您尝试保存,它将不让您保存,因为url
值中的pdfname
值在其中有一个空格。它需要链接没有任何空格。所以基本上,我想让它在进入字段后,它仍然是一个%20
而不是一个空格。
source
, auto
或title
没有问题,只是url
…
有办法解决这个问题吗?比如我可以用一个特殊的转义字符来代替%20
?
注意:我不能修改书签页
我正在使用c#/asp.net创建链接并进入它。
谢谢
从。net Framework 4.5开始,你可以使用WebUtility.UrlEncode
.
它驻留在System.dll
中,因此不需要任何额外的引用。
正确转义url字符,不像Uri.EscapeUriString
与Uri.EscapeDataString
不同,它对字符串的长度没有任何限制,因此它可以用于POST请求
System.Net.WebUtility.UrlEncode(urlText)
另一个选项是
System.Uri.EscapeDataString()
Uri.EscapeDataString()和Uri.UnescapeDataString()与UrlEncode/UrlDecode方法相比是安全的,并且在解码时不会将加号转换为空格。
其他用户的一些详细信息:http://geekswithblogs.net/mikehuguet/archive/2009/08/16/134123.aspx
在传递url之前使用HttpUtilty的UrlEncode
方法;
string encoded = HttpUtility.UrlEncode(url);