Reputation: 38106
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
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
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
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
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
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
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
Reputation: 8851
On .Net 4.0:
System.Net.WebUtility.HtmlDecode()
No need to include assembly for a C# project
Upvotes: 206
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
Reputation: 28857
If there is no Server context (i.e your running offline), you can use HttpUtility.HtmlDecode.
Upvotes: 16
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