Vasil
Vasil

Reputation: 38106

How can I decode HTML characters in C#?

I have email addresses encoded with HTML character entities. Is there anything in .NET that can convert them to plain strings?

Upvotes: 449

Views: 406208

Answers (10)

Quintin Robinson
Quintin Robinson

Reputation: 82325

You can use HttpUtility.HtmlDecode.

If you are using .NET 4.0+ you can also use WebUtility.HtmlDecode which does not require an extra assembly reference as it is available in the System.Net namespace.

Upvotes: 683

self.name
self.name

Reputation: 2391

For strings containing   I've had to double-decode the string. First decode would turn it into the second pass would correctly decode it to the expected character.

Upvotes: 1

Abhishek Jaiswal
Abhishek Jaiswal

Reputation: 1249

To decode HTML take a look below code

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

Output is like

 Svendborg Værft A/S

Upvotes: 17

Vinod Srivastav
Vinod Srivastav

Reputation: 4255

For .net 4.0

Add a reference to System.net.dll to the project with using System.Net; then use the following extensions

// 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;
        }
    }

Upvotes: 1

Tahir Alvi
Tahir Alvi

Reputation: 994

Write static a method into some utility class, which accept string as parameter and return the decoded html string.

Include the using System.Web.HttpUtility into your class

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

           return HttpUtility.HtmlDecode(text);
        }else{

         return text;
        }

    }

Upvotes: 1

hype-vhs
hype-vhs

Reputation: 428

It is also worth mentioning that if you're using HtmlAgilityPack like I was, you should use HtmlAgilityPack.HtmlEntity.DeEntitize(). It takes a string and returns a string.

Upvotes: 13

Indy9000
Indy9000

Reputation: 8851

On .Net 4.0:

System.Net.WebUtility.HtmlDecode()

No need to include assembly for a C# project

Upvotes: 206

OwenP
OwenP

Reputation: 25378

As @CQ says, you need to use HttpUtility.HtmlDecode, but it's not available in a non-ASP .NET project by default.

For a non-ASP .NET application, you need to add a reference to System.Web.dll. Right-click your project in Solution Explorer, select "Add Reference", then browse the list for System.Web.dll.

Now that the reference is added, you should be able to access the method using the fully-qualified name System.Web.HttpUtility.HtmlDecode or insert a using statement for System.Web to make things easier.

Upvotes: 46

Rob Cooper
Rob Cooper

Reputation: 28857

If there is no Server context (i.e your running offline), you can use HttpUtility.HtmlDecode.

Upvotes: 16

Daniel Schierbeck
Daniel Schierbeck

Reputation: 1952

Use Server.HtmlDecode to decode the HTML entities. If you want to escape the HTML, i.e. display the < and > character to the user, use Server.HtmlEncode.

Upvotes: 7

Related Questions