Unescape экранированный URL в C # - PullRequest
10 голосов
/ 29 июня 2011

У меня есть URL, которые экранируются в этой форме:

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

Я хочу преобразовать его в форму без экранирования

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

Это то же самое, что escapped html?

как мне это сделать?

спасибо

1 Ответ

13 голосов
/ 29 июня 2011

& является сущностью 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. Если вам необходимо включить какой-либо из этих символов, скажем, в параметр запроса, вам придется URL-кодировать параметр, чтобы не портить URL-адрес. Вот пример URL, где использовался экранирование URL:

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

Название компании Barnes & Noble было закодировано как Barnes+%26+Noble. Если бы & не был экранирован, URL содержал бы не один, а два параметра запроса, поскольку & используется в качестве разделителя между параметрами запроса.

...