【问题标题】:Decoding all HTML Entities解码所有 HTML 实体
【发布时间】:2012-01-11 01:01:31
【问题描述】:

我正在寻找可以解码大量 HTML 实体的函数。

原因是我正在编写一些代码来获取 HTML 内容并将其转换为纯文本,我遇到的问题是很多实体使用HttpUtility.HtmlDecode 进行转换。

我关心的一些实体示例是  、&、©。

这适用于 .net 3.5

【问题讨论】:

  • 我切换到 .Net 3.5 并使用了Console.WriteLine(HttpUtility.HtmlDecode(" , &, ©"));,它对我来说效果很好。我不明白你为什么会遇到麻烦。你有奇怪的字符串编码什么的吗?

标签: c# asp.net html-entities


【解决方案1】:

使用 .Net 4 中包含的 WebUtility.HtmlDecode

例如,如果我在控制台应用程序中运行:

  Console.WriteLine(WebUtility.HtmlDecode(" , &, ©"));

我收到, &, c

【讨论】:

  • 我可能应该说这是针对 .net 3.5 的。我为你 +1 了。还是谢谢你。
  • WebUtility和HttpUtility的HtmlDecode方法有什么区别?
  • 这里有一个答案:stackoverflow.com/questions/17352981/… 简而言之 - WebUtility 是随 WinRT 一起提供的,它是较新的,而 HttpUtility 是旧的(到处都在使用,所以我希望它会保留下来)。另外我认为 WebUtility 在 System.dll (System.Net) 中,如果我没记错的话,这使得 WinApps 更容易访问它(你不必依赖 System.Web)。
【解决方案2】:

那么也许你需要 HttpUtility.HtmlDecode?。 它应该可以工作,您只需要添加对 System.Web 的引用。 至少在 .Net Framework

例如下面的代码:

MessageBox.Show(HttpUtility.HtmlDecode("&©"));

工作并且输出符合预期(与号和版权符号)。 您确定问题出在 HtmlDecode 中,而不是其他问题?

更新:另一个能够完成这项工作的类 WebUtility(同样是 HtmlDecode 方法)出现在较新版本的 .Net 中。但是,它似乎存在一些问题。请参阅HttpUtility vs. WebUtility 问题。

【讨论】:

  • 你是对的,这就是我使用结果的方式,如果我将它放入 asp:label 中,它会将 copywrite 字符转换为 ©。
  • 我明白了。知道这一点非常有用:)。
  • 如果是使用js的encodeURI()使用HttpUtility.UrlDecode()
猜你喜欢
  • 1970-01-01
  • 2014-01-15
  • 2011-08-13
  • 1970-01-01
  • 1970-01-01
  • 2011-05-16
相关资源
最近更新 更多