Unescape在c#中转义的网址

时间:2011-06-29 10:32:25

标签: c# .net winforms url escaping

我有以这种形式转义的网址:

   http://www.someurl.com/profile.php?mode=register&agreed=true

我想将其转换为非转义形式

   http://www.someurl.com/profile.php?mode=register&agreed=true

这与escapped html相同吗?

我该怎么做?

感谢

2 个答案:

答案 0 :(得分:12)

&是一个HTML实体,在文本编码为HTML时使用,因为您必须“转义”HTML中具有特殊含义的&。显然,这个转义机制在URL上使用可能是因为它在某些HTML中用于例如链接中。我不确定你为什么要解码它,因为浏览器会在点击链接时进行正确的解码。但无论如何,为了还原它,您可以在HttpUtility.HtmlDecode命名空间中使用System.Web

var encoded = "http://www.someurl.com/profile.php?mode=register&agreed=true";
var decoded = HttpUtility.HtmlDecode(encoded);

decoded的值为:

http://www.someurl.com/profile.php?mode=register&agreed=true

使用的另一种编码/解码形式是URL编码。这用于能够在URL的部分中包含特殊字符。例如,字符/?&在网址中具有特殊含义。如果您需要在查询参数中包含任何这些字符,则必须对参数进行URL编码,以免弄乱URL。以下是使用URL转义的URL示例:

http://www.someurl.com/profile.php?company=Barnes+%26+Noble

公司名称Barnes & Noble编码为Barnes+%26+Noble。如果&未被转义,则URL将包含不是一个而是包含两个查询参数,因为&用作查询参数之间的分隔符。

答案 1 :(得分:0)

不确定为什么要从@Martin的答案中解码,但在我的情况下不起作用(我的文件名是“%D1%8D%D1%84%D1%84%D0%B5%D0%BA%D1%82 %D0%B8%D0%BD%D0%BE%D0%B2%D1%81%D1%82%D1%8C%20%D0%BF%D1%80%D0%BE%D0%B4%D0%B0 %D0%B6%202020%20(1)-8.xml“)。

对我来说,工作方法-https://docs.microsoft.com/en-us/dotnet/api/system.uri.unescape?view=netcore-3.1

请注意,这已经过时了。