2011-12-01 42 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)如果我没有记错。 –