2011-06-29 40 views
7

可能重複:
How can I decode HTML characters in C#?UNESCAPE在C#中逸出的網址

我這是在這種形式的轉義網址:

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

我想將它轉化成非轉義形式

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

和封裝的html是一樣的嗎?

我該怎麼做?

感謝

+1

URL編碼與HTML編碼完全不同,因爲它被標記爲重複的。標記爲重新打開。 – Deestan

回答

9

&是一個HTML實體,當文字被編碼成HTML,因爲你要「逃離」已在HTML特殊含義&使用。顯然,這個轉義機制被用在URL上,可能是因爲它在某些HTML中用於鏈接。我不知道你爲什麼要解碼它,因爲瀏覽器會在點擊鏈接時進行正確的解碼。但無論如何,要恢復它,你可以在System.Web命名空間中使用HttpUtility.HtmlDecode

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將不包含一個而是兩個查詢參數,因爲&用作查詢參數之間的分隔符。

+0

這是一個winforms應用程序。它會在.net 2.0中工作嗎?我得到一個錯誤'HttpUtility'沒有聲明' – Smith

+0

@Smith:這是.NET 2.0'HttpUtility'類的文檔:http://msdn.microsoft.com/en-us/library/1e55w41w(v=VS 0.80)的.aspx。您是否記得添加對「System.Web.dll」的引用? –