如何在C#中解码HTML字符?

Vas*_*sil 386 c#

我有用HTML字符实体编码的电子邮件地址..NET中有什么东西可以将它们转换为纯字符串吗?

Qui*_*son 608

您可以使用 HttpUtility.HtmlDecode

如果您使用的是.NET 4.0+,则还可以使用WebUtility.HtmlDecode不需要额外的程序集引用,因为它在System.Net命名空间中可用.

  • 在项目属性中添加对System.Web.Dll的引用.您看到的类存在于System.dll中,默认情况下引用该类. (17认同)
  • 如果您尝试解码查询字符串,则需要使用`HttpUtility.UrlDecode` (9认同)

Ind*_*000 186

在.Net 4.0上:

System.Net.WebUtility.HtmlDecode()
Run Code Online (Sandbox Code Playgroud)

无需为C#项目包含程序集

  • 这是更好的解决方案,因为HttpUtility不解码"'" 符号..我不知道为什么.. (6认同)

Owe*_*enP 42

正如@CQ所说,你需要使用HttpUtility.HtmlDecode,但默认情况下它不适用于非ASP .NET项目.

对于非ASP .NET应用程序,您需要添加对它的引用System.Web.dll.在解决方案资源管理器中右键单击您的项目,选择"添加引用",然后浏览列表System.Web.dll.

现在添加了引用,您应该能够使用完全限定名称访问该方法,System.Web.HttpUtility.HtmlDecode或者插入using语句System.Web以使事情更容易.


Rob*_*per 16

如果没有服务器上下文(即您的脱机运行),则可以使用HttpUtility.HtmlDecode.


Dan*_*eck 7

使用Server.HtmlDecode的HTML实体解码.如果要转义 HTML,即向用户显示<>字符,请使用Server.HtmlEncode.

  • 可能没有服务器上下文(即运行测试用例等)我之前陷入了这个陷阱:) (4认同)

小智 7

要解码HTML,请看下面的代码

string s = "Svendborg V&#230;rft A/S";
string a = HttpUtility.HtmlDecode(s);
Response.Write(a);
Run Code Online (Sandbox Code Playgroud)

输出就像

 Svendborg Værft A/S
Run Code Online (Sandbox Code Playgroud)

  • 'ToString()'是多余的,因为HtmlDecode返回一个字符串 (2认同)

Hyp*_*dsy 5

值得一提的是,如果你像我一样使用HtmlAgilityPack,你应该使用HtmlAgilityPack.HtmlEntity.DeEntitize().需要一个string并返回一个string.