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

时间:2008-09-23 18:01:15

标签: c#

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

10 个答案:

答案 0 :(得分:590)

您可以使用HttpUtility.HtmlDecode

如果您使用的是.NET 4.0+,您还可以使用WebUtility.HtmlDecode,它不需要System.Net名称空间中提供的额外程序集引用。

答案 1 :(得分:181)

在.Net 4.0上:

System.Net.WebUtility.HtmlDecode()

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

答案 2 :(得分:42)

正如@CQ所说,您需要使用HttpUtility.HtmlDecode,但默认情况下它在非ASP .NET项目中不可用。

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

现在添加了引用,您应该能够使用完全限定名称System.Web.HttpUtility.HtmlDecode访问该方法,或者为using插入System.Web语句以简化操作。< / p>

答案 3 :(得分:16)

如果没有服务器上下文(即您正在离线运行),则可以使用HttpUtilityHtmlDecode

答案 4 :(得分:7)

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

答案 5 :(得分:7)

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

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

输出就像

 Svendborg Værft A/S

答案 6 :(得分:4)

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

答案 7 :(得分:1)

将静态方法写入某个实用程序类,它接受字符串作为参数并返回已解码的html字符串。

using System.Web.HttpUtility纳入您的班级

public static string HtmlEncode(string text)
    {
        if(text.length > 0){

           return HttpUtility.HtmlDecode(text);
        }else{

         return text;
        }

    }

答案 8 :(得分:1)

对于.net 4.0

使用System.net.dll向项目中添加对using System.Net;的引用,然后使用以下扩展名

// Html encode/decode
    public static string HtmDecode(this string htmlEncodedString)
    {
        if(htmlEncodedString.Length > 0)
        {
            return System.Net.WebUtility.HtmlDecode(htmlEncodedString);
        }
        else
        {
            return htmlEncodedString;
        }
    }

    public static string HtmEncode(this string htmlDecodedString)
    {
        if(htmlDecodedString.Length > 0)
        {
            return System.Net.WebUtility.HtmlEncode(htmlDecodedString);
        }
        else
        {
            return htmlDecodedString;
        }
    }

答案 9 :(得分:0)

对于包含&#x20;的字符串我不得不对字符串进行双解码。第一次解码会将其转换为第二遍,并将其正确解码为所需字符。