在C#中对转义的URL进行反转义

12

我有一些以这种形式转义的 URL:

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

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

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

这是转义HTML的同义词吗?

我应该如何操作?

谢谢


1
URL编码与HTML编码完全不同,因此这被标记为重复内容。已标记为重新开放。 - Deestan
2个回答

17

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

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转义的URL示例:

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

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


这是一个WinForms应用程序。它能在.NET 2.0中运行吗?我收到了一个错误信息“HttpUtility未声明”。 - Smith
@SmithпјҡиҝҷйҮҢжҳҜ.NET 2.0 HttpUtilityзұ»зҡ„ж–ҮжЎЈпјҡhttp://msdn.microsoft.com/en-us/library/1e55w41w(v=VS.80).aspxгҖӮдҪ и®°еҫ—ж·»еҠ еҜ№System.Web.dllзҡ„еј•з”ЁдәҶеҗ—пјҹ - Martin Liversage

1

你可以使用 https://learn.microsoft.com/en-us/dotnet/api/system.uri.unescapedatastring。 - Dragoon

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