J'ai des adresses électroniques encodées avec des entités de caractères HTML. Y a-t-il quelque chose dans .NET qui peut les convertir en chaînes simples?
Vous pouvez utiliser HttpUtility.HtmlDecode
Si vous utilisez .NET 4.0+, vous pouvez également utiliser WebUtility.HtmlDecode
qui ne nécessite pas de référence Assembly supplémentaire, car celle-ci est disponible dans l'espace de noms System.Net
.
Sur .Net 4.0:
System.Net.WebUtility.HtmlDecode()
Pas besoin d'inclure Assembly pour un projet C #
Comme @CQ le dit, vous devez utiliser HttpUtility.HtmlDecode , mais il n'est pas disponible par défaut dans un projet non ASP .NET.
Pour une application non-ASP .NET, vous devez ajouter une référence à System.Web.dll
. Cliquez avec le bouton droit sur votre projet dans l'Explorateur de solutions, sélectionnez "Ajouter une référence", puis parcourez la liste pour System.Web.dll
.
Maintenant que la référence est ajoutée, vous devriez pouvoir accéder à la méthode en utilisant le nom qualifié complet System.Web.HttpUtility.HtmlDecode
ou insérer une instruction using
pour System.Web
afin de faciliter les choses.
S'il n'y a pas de contexte de serveur (c'est-à-dire votre exécution hors ligne), vous pouvez utiliser HttpUtility . HtmlDecode .
Utilisez Server.HtmlDecode
pour décoder les entités HTML. Si vous voulez échapper le code HTML, c’est-à-dire afficher le caractère <
et >
à l’utilisateur, utilisez Server.HtmlEncode
.
Pour décoder HTML, regardez ci-dessous le code
string s = "Svendborg Værft A/S";
string a = HttpUtility.HtmlDecode(s);
Response.Write(a);
La sortie est comme
Svendborg Værft A/S
Il convient également de mentionner que si vous utilisez HtmlAgilityPack comme moi, vous devez utiliser HtmlAgilityPack.HtmlEntity.DeEntitize()
. Il prend une string
et retourne une string
.
Ecrivez une méthode statique dans une classe d’utilitaire, qui accepte string en tant que paramètre et renvoie la chaîne HTML décodée.
Inclure le using System.Web.HttpUtility
dans votre classe
public static string HtmlEncode(string text)
{
if(text.length > 0){
return HttpUtility.HtmlDecode(text);
}else{
return text;
}
}
Pour .net 4.0
Ajoutez une référence à System.net.dll
au projet avec using System.Net;
puis utilisez les extensions suivantes
// 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;
}
}