2011-06-29 10 views
7

Powiel możliwe:
How can I decode HTML characters in C#?unescape zbiegłym url wC#

mam adres URL, który uciekł w tej formie:

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

chcę, aby przekształcić go jednokierunkowy formularz

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

czy to samo, co zamaskowany html?

jak to zrobić?

dzięki

+1

Kodowanie adresu URL różni się całkowicie od kodowania HTML, ponieważ jest oznaczone jako duplikat. Oznaczone do ponownego otwarcia. – Deestan

Odpowiedz

9

& jest podmiotem HTML i jest stosowany, gdy tekst jest kodowany w formacie HTML, ponieważ masz do „ucieczki” z & że ma specjalne znaczenie w HTML. Wygląda na to, że ten mechanizm ucieczki został użyty pod adresem URL prawdopodobnie dlatego, że jest używany w jakimś kodzie HTML, na przykład w łączu. Nie wiem, dlaczego chcesz ją odkodować, ponieważ przeglądarka zrobi odpowiednie dekodowanie po kliknięciu łącza. Ale mimo to, aby go przywrócić można użyć HttpUtility.HtmlDecode w przestrzeni nazw System.Web:

var encoded = "http://www.someurl.com/profile.php?mode=register&agreed=true"; 
var decoded = HttpUtility.HtmlDecode(encoded); 

Wartość decoded jest:

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

Inną formą kodowania/dekodowania używane jest kodowanie URL. Umożliwia to umieszczanie znaków specjalnych w częściach adresu URL. Na przykład znaki /, ? i & mają specjalne znaczenie w adresie URL. Jeśli musisz uwzględnić któryś z tych znaków w parametrze zapytania, musisz zakodować kod URL, aby nie zepsuł adresu URL. Oto przykład adresu URL, gdzie został użyty URL Cytowanie:

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

Firma nazwa Barnes & Noble został zakodowany jako Barnes+%26+Noble. Jeśli zmienna & nie została zmieniona, adres URL nie zawierałby jednego, ale dwóch parametrów zapytania, ponieważ & jest używany jako ogranicznik między parametrami zapytania.

+0

to jest aplikacja WinForm. czy będzie działać w .net 2.0? otrzymuję komunikat o błędzie "HttpUtility" nie jest zadeklarowany " – Smith

+0

@Smith: Oto dokumentacja klasy .NET 2.0" HttpUtility ": http://msdn.microsoft.com/en-us/library/1e55w41w(v=VS .80) .aspx. Czy pamiętasz, aby dodać odniesienie do "System.Web.dll"? –