2011-06-29 15 views
7

Olası Çoğalt:Unescape C# kaçan bir URL

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

ben dönüştürmek istiyorum:
How can I decode HTML characters in C#?

Bu formda çıkışlıdır; URL'ler var çıkmamış biçim

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

bu escapped html ile aynı şey mi?

Bunu nasıl yaparım?

sayesinde

+1

URL kodlaması, HTML kodlamasından tamamen farklıdır; Yeniden açmak için işaretlendi. – Deestan

cevap

9

& HTML varlığına ve HTML'de özel bir anlamı vardır & "kaçış" zorunda çünkü metin HTML içine kodlanmış edildiğinde kullanılır. Görünüşe göre bu çıkış mekanizması, muhtemelen bir bağlantıda bazı HTML’lerde kullanıldığı için URL’de kullanılıyordu. Tarayıcımın bağlantı tıklandığında uygun kod çözme yapacağı için neden şifresini çözmek istediğinizden emin değilim. Ama neyse, bunu geri döndürmek sen System.Web ad HttpUtility.HtmlDecode kullanabilirsiniz:

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

decoded değeridir:

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

kodlama bir başka şekli/kullanılan kod çözme URL kodlama olduğunu. Bu, URL'nin bölümlerine özel karakterler ekleyebilmek için kullanılır. Örneğin, /, ? ve & karakterlerinin bir URL'de özel bir anlamı vardır. Bu karakterlerden herhangi birini bir sorgu parametresine eklemeniz gerekiyorsa, URL'yi URL'yi dağıtmayan parametreyi kodlamanız gerekir. İşte URL öncelenimi nerede kullanıldığının bir URL örneğidir:

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

adı Barnes & NobleBarnes+%26+Noble olarak kodlanmış şirketi. &'dan çıkılmamış olsaydı, URL, sorgu parametreleri arasında sınırlayıcı olarak & kullanıldığı için, bir değil iki sorgu parametresi içerecektir.

+0

Bu bir winforms uygulamasıdır. .net 2.0 çalışacak mı? hata alıyorum 'HttpUtility 'bildirilmemiş' – Smith

+0

@Smith: İşte .NET 2.0' HttpUtility' sınıfı için belgelere: http://msdn.microsoft.com/en-us/library/1e55w41w(v=VS .80) .aspx. System.Web.dll dosyasına bir başvuru eklemeyi hatırladınız mı? –