web-dev-qa-db-fra.com

Comment décoder des caractères HTML en C #?

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?

359
Vasil

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.

580
Quintin Robinson

Sur .Net 4.0:

System.Net.WebUtility.HtmlDecode()

Pas besoin d'inclure Assembly pour un projet C #

181
Indy9000

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.

42
OwenP

S'il n'y a pas de contexte de serveur (c'est-à-dire votre exécution hors ligne), vous pouvez utiliser HttpUtility . HtmlDecode .

16
Rob Cooper

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.

6
Daniel Schierbeck

Pour décoder HTML, regardez ci-dessous le code

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

La sortie est comme

 Svendborg Værft A/S
6
Abhishek Jaiswal

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.

5
Hypershadsy

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

    }
1
Tahir Alvi

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;
        }
    }
0
Vinod Srivastav