it-swarm.com.de

Wie kann ich HTML-Zeichen in C # dekodieren?

Ich habe E-Mail-Adressen, die mit HTML-Zeichenentitäten codiert sind. Gibt es etwas in .NET, das sie in einfache Zeichenfolgen konvertieren kann?

359
Vasil

Sie können HttpUtility.HtmlDecode verwenden.

Wenn Sie .NET 4.0 oder höher verwenden, können Sie auch WebUtility.HtmlDecode verwenden, für das keine zusätzliche Assemblyreferenz erforderlich ist, da diese im Namespace System.Net verfügbar ist.

580

Auf .Net 4.0:

System.Net.WebUtility.HtmlDecode()

Für ein C # -Projekt muss keine Assembly eingeschlossen werden

181
Indy9000

Wie @CQ sagt, müssen Sie HttpUtility.HtmlDecode verwenden, es ist jedoch standardmäßig nicht in einem Nicht-ASP-Projekt verfügbar.

Für eine Nicht-ASP-Anwendung müssen Sie einen Verweis auf System.Web.dll hinzufügen. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf Ihr Projekt, wählen Sie "Verweis hinzufügen" aus, und durchsuchen Sie die Liste nach System.Web.dll.

Nun, da die Referenz hinzugefügt wurde, sollten Sie in der Lage sein, mit dem vollständig qualifizierten Namen System.Web.HttpUtility.HtmlDecode auf die Methode zuzugreifen oder eine using-Anweisung für System.Web einzufügen, um die Verarbeitung zu erleichtern.

42
OwenP

Wenn kein Serverkontext vorhanden ist (d. H. Sie sind offline), können Sie HttpUtility . HtmlDecode verwenden.

16
Rob Cooper

Verwenden Sie Server.HtmlDecode, um die HTML-Entitäten zu decodieren. Wenn Sie escape HTML aufrufen möchten, d. H. Dem Benutzer das Zeichen < und > anzeigen möchten, verwenden Sie Server.HtmlEncode.

6

Um HTML zu decodieren, werfen Sie einen Blick unter den Code

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

Ausgabe ist wie

 Svendborg Værft A/S
6

Es ist auch erwähnenswert, dass Sie, wenn Sie HtmlAgilityPack wie ich verwenden, HtmlAgilityPack.HtmlEntity.DeEntitize() verwenden sollten. Es nimmt ein string und gibt ein string zurück.

5
Hypershadsy

Schreiben Sie static eine Methode in eine Dienstprogrammklasse, die Zeichenfolge als Parameter akzeptiert und die dekodierte HTML-Zeichenfolge zurückgibt.

Fügen Sie den using System.Web.HttpUtility in Ihre Klasse ein

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

           return HttpUtility.HtmlDecode(text);
        }else{

         return text;
        }

    }
1
Tahir Alvi

Für .net 4.0

Fügen Sie dem Projekt mit System.net.dll einen Verweis auf using System.Net; hinzu, und verwenden Sie dann die folgenden Erweiterungen

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