我有一些以这种形式转义的 URL:
http://www.someurl.com/profile.php?mode=register&agreed=true
我想将其转换为未转义形式
http://www.someurl.com/profile.php?mode=register&agreed=true
这是转义HTML的同义词吗?
我应该如何操作?
谢谢
&
是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将包含两个查询参数,因为&
用作查询参数之间的分隔符。
HttpUtility
зұ»зҡ„ж–ҮжЎЈпјҡhttp://msdn.microsoft.com/en-us/library/1e55w41w(v=VS.80).aspxгҖӮдҪ и®°еҫ—ж·»еҠ еҜ№System.Web.dll
зҡ„еј•з”ЁдәҶеҗ—пјҹ - Martin Liversage我不确定为什么,但是从@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://learn.microsoft.com/en-us/dotnet/api/system.uri.unescape?view=netcore-3.1。
请注意,此方法已过时。