2011-12-01 73 views
16

我找一些功能,將解碼HTML實體的一個良好的數額。解碼所有HTML實體

原因是我正在處理一些代碼,將HTML內容變成純文本,我的問題是很多實體做而不是使用HttpUtility.HtmlDecode得到轉換。

我關心的實體的一些例子是& nbsp;,& amp ;, & copy ;.

這是.NET 3.5

+0

我切換到.Net 3.5並使用'Console.WriteLine(HttpUtility.HtmlDecode(「 ,&, ©」));'它對我來說工作得很好。我無法弄清楚爲什麼你會遇到麻煩。你有一個奇怪的字符串編碼或什麼? –

回答

19

那麼也許你需要HttpUtility。 HtmlDecode? 它應該工作,你只需要添加的System.Web參考。 至少這是.Net框架< 4.

例如下面的代碼的方式:

MessageBox.Show(HttpUtility.HtmlDecode("&amp;&copy;")); 

工作,並輸出是如預期(和號和版權符號)。 你確定這個問題是在HtmlDecode中,而不是別的?

更新:另一個能夠完成這個工作的類,WebUtility(也是HtmlDecode方法)出現在新的.Net版本中。但是,它似乎存在一些問題。請參閱HttpUtility vs. WebUtility問題。

+0

你是正確的,這是我如何使用的結果,如果我把它變成一個asp:標籤它將在copywrite字符轉換成©。 – Matthew

+0

我明白了。知道:)是非常有用的。 –

20

都包含在.NET 4

例如使用WebUtility.HtmlDecode,如果我在一個控制檯應用程序運行:

Console.WriteLine(WebUtility.HtmlDecode("&nbsp;, &amp;, &copy;")); 

我得到, &, c

+1

我可能應該說這是爲.net 3.5。儘管我已經給你+1了。不管怎樣,謝謝你。 – Matthew

+0

是什麼WebUtility和HttpUtility的'HtmlDecode'方法之間的區別? – crush

+0

這裏有一個答案: http://stackoverflow.com/questions/17352981/webutility-htmldecode-vs-httputilty-htmldecode 總之 - WebUtility帶着WinRT的,它是新的,而HttpUtility是舊的(使用的所有在這個地方,所以我希望它留下)。 此外我認爲WebUtility是在System.dll中(System.Net),這使得它更容易一點的WinApps(你不必依賴的System.Web)如果我沒有記錯。 –