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 7

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 содержал бы не один, а два параметра запроса, поскольку & используется в качестве разделителя между параметрами запроса.