Unescape экранированный url в c#
У меня есть URL-адреса, которые экранируются в следующем виде:
http://www.someurl.com/profile.php?mode=register&agreed=true
Я хочу, чтобы преобразовать его экранируется
http://www.someurl.com/profile.php?mode=register&agreed=true
Это то же самое, что и escapped html?
Как мне это сделать?
Спасибо
1 ответ:
&
является 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. Если вам нужно включить любой из этих символов в параметр say a query, вам придется кодировать URL-адрес, чтобы не испортить URL-адрес. Вот пример URL, где был использован экранирование URL:http://www.someurl.com/profile.php?company=Barnes+%26+Noble
Название компании
Barnes & Noble
было закодировано какBarnes+%26+Noble
. Если бы&
не был экранирован, URL содержал бы не один, а два параметра запроса, поскольку&
используется в качестве разделителя между параметрами запроса.