在c#中取消转义一个url

本文关键字:一个 url 取消 转义 | 更新日期: 2023-09-27 18:00:36

我有以以下形式转义的URL:

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

我想将其转换为无标题的形式

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

这和escaped html是一回事吗?

我该怎么做?

感谢

在c#中取消转义一个url

&是一个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将包含两个查询参数而不是一个查询参数,因为&用作查询参数之间的分隔符。

不确定为什么,但根据@Martin的回答进行解码在我的情况下不起作用(我的情况中的文件名为"%D1%8D%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%2020%20(1)-8.xml")。

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

请注意,这已经过时了。