HTML Entity Encode / Decode
Encode special characters to HTML entities or decode them back.
Geprüft von Aygul Dovletova · Zuletzt geprüft
Den HTML-Entity-Encoder/Decoder verwenden
- Wähle Kodieren oder Dekodieren mit dem Modus-Schalter. Kodieren wandelt Zeichen wie
<,>,&,"und Apostroph in HTML-Entities um; Dekodieren kehrt den Vorgang um und wandelt<wieder in<. - Füge ein oder tippe Text in das Eingabefeld. Die Ausgabe aktualisiert sich bei jedem Tastendruck, sodass du die Umwandlung in Echtzeit siehst, ohne etwas klicken zu müssen.
- Aktiviere "Alle Nicht-ASCII kodieren" wenn du jedes Zeichen über Codepunkt 127 (Buchstaben mit Akzenten, Emoji, CJK) in numerische Entities umwandeln möchtest. Lasse es deaktiviert, um nur die fünf XML-Sonderzeichen zu kodieren.
- Verwende die Tausch-Schaltfläche um die Ausgabe in die Eingabe zu verschieben und den Modus umzukehren. Damit kannst du einen String hin- und zurückkodieren, um sicherzustellen, dass deine Kodierung verlustfrei ist.
Was der Codec tut und wie er vorgeht
Der Encoder durchsucht den Eingabestring Zeichen für Zeichen. Für jedes Zeichen prüft er eine Ersetzungstabelle. Die Standardtabelle umfasst die fünf vordefinierten XML-Entities: & wird zu &, < zu <, > zu >, " zu ", und das Apostroph zu ' (die benannte Entity ' ist gültig in XML, war aber historisch in älteren HTML-Versionen nicht vorhanden, daher ist die numerische Form sicherer). Mit aktiviertem "Alle Nicht-ASCII kodieren" gibt jedes Zeichen mit einem Codepunkt über 127 &#Code; in dezimal aus.
Der Decoder verarbeitet drei Entity-Formen: benannte Entities aus der HTML-Liste der benannten Zeichenreferenzen (©, €, — und über 2.000 weitere), dezimale numerische Referenzen (©) und hexadezimale numerische Referenzen (©). Jede Sequenz, die keine erkannte Entity ist, bleibt unverändert. Surrogatpaare in numerischer Form werden zu einzelnen Codepunkten zusammengesetzt, sodass Entities wie 😀 korrekt in das lachende Emoji dekodiert werden.
Wann du dieses Werkzeug brauchst
- Einen Code-Ausschnitt, der
<oder>enthält, in eine HTML-Seite einzufügen, ohne das umgebende Markup zu zerstören. - Einen String für die sichere Aufnahme in ein XML-Dokument (SOAP-Anfrage, SVG, Atom-Feed) vorzubereiten, wo die fünf reservierten Zeichen kodiert sein müssen.
- Text aus einem älteren CMS zu bereinigen, wo alles als Entities gespeichert wurde, und du einfaches Unicode zurückmöchtest.
- Zu debuggen, warum eine Webseite
&amp;dreifach anzeigt - normalerweise ein Doppelkodierungsfehler, den du durch wiederholtes Dekodieren beheben kannst. - Reines ASCII für ein System zu erstellen (altes SMTP, alte SMS-Gateways), das UTF-8 nicht zuverlässig übertragen kann.
- Einen langen eingefügten Text mit jeder Art von Satzzeichen zu kodieren, um zu sehen, welche in deinem Zielformat eine Maskierung benötigen.
Fallstricke
- Das Apostroph.
'wurde in HTML5 hinzugefügt, fehlte aber in HTML4, daher erkennen ältere Werkzeuge es möglicherweise nicht. Der Encoder verwendet die numerische Form'für maximale Kompatibilität mit HTML 4 und XML 1.0. - Semikolons sind erforderlich. Moderne Browser tolerieren fehlende Terminatoren bei Legacy-Entities (
©ohne;), aber ein strikter XML-Parser lehnt sie ab. Im Zweifelsfall das Semikolon immer einbeziehen. - Numerische Grenzen. HTML-numerische Zeichenreferenzen über
0x10FFFFsind ungültig. Der Decoder verwirft Werte außerhalb des Bereichs still, anstatt eine Best-Effort-Konvertierung zu versuchen. - Surrogatpaare. UTF-16-Surrogathaften (
0xD800bis0xDFFF) sollten nicht als eigenständige Entities erscheinen. Wenn deine Eingabe diese enthält, gibt der Decoder das ErsatzzeichenU+FFFDaus, um das Problem anzuzeigen. - Doppelt kodierte Eingabe.
&lt;ist ein String, bei dem ein Ampersand auf einer bereits kodierten Entity kodiert wurde. Ein Decode-Durchlauf ergibt<; ein zweiter ergibt<. Dekodiere erneut, bis die Ausgabe unverändert bleibt.
Spezifikationshintergrund
HTML-Zeichenreferenzen sind im HTML Living Standard der WHATWG definiert, insbesondere in den Abschnitten "Named character references" und "Character reference state" des Tokenizers. Die kanonische Liste der benannten Entities befindet sich unter html.spec.whatwg.org und enthält etwas über 2.000 Einträge, von denen einige Legacy-Kompatibilität mit oder ohne abschließendes Semikolon bieten. XML 1.0, Abschnitt 4.6, definiert nur die fünf vordefinierten Entities (amp, lt, gt, quot, apos) und erfordert, dass jede andere Entity in einer DTD deklariert wird. Das ist der Grund, warum ein String, der im Browser sauber dekodiert wird, in einem XML-Parser fehlschlagen kann - der XML-Parser hat kein implizites Wissen über ©. Numerische Zeichenreferenzen funktionieren in beiden Standards identisch.
Ähnliche Werkzeuge
Das html-Paket auf npm umschließt dieselben Entity-Tabellen und ist ein Drop-in-Ersatz, wenn diese Logik in einem Node-Skript benötigt wird. Das html-Modul der Python-Standardbibliothek (html.escape und html.unescape) deckt dieselben Anwendungsfälle ab. sed oder awk kann eine schnelle Fünf-Entity-Maskierung durchführen, kann aber nicht das vollständige benannte Entity-Lexikon verarbeiten. Die Chrome-DevTools-Konsole ermöglicht die Verwendung von document.createElement("textarea"), um einen String durch den eigenen Entity-Decoder des Browsers zu führen - schnell für einmalige Dekodierungen. Dieses Browser-Werkzeug erspart dir den Aufwand für all das, wenn du nur einen schnellen Hin- und Rücktransport brauchst.
Häufig gestellte Fragen
Welche Zeichen werden standardmäßig kodiert?
Die fünf HTML/XML-Sonderzeichen: <code>&</code> wird zu <code>&amp;</code>, <code><</code> zu <code>&lt;</code>, <code>></code> zu <code>&gt;</code>, <code>"</code> zu <code>&quot;</code>, und das Apostroph zu <code>&#39;</code>. Das ist die Mindestmenge, die einen String in HTML-Textinhalt oder Attributwerten sicher macht. Alle anderen Zeichen bleiben unverändert, sodass Emoji, Buchstaben mit Akzenten und CJK-Text im Quellcode lesbar bleiben.
Was macht die Option "Alle Nicht-ASCII kodieren"?
Mit aktiviertem Schalter wird jedes Zeichen mit einem Codepunkt über 127 durch eine dezimale numerische Entity (<code>&#</code>Code<code>;</code>) ersetzt. Die Ausgabe wird reines ASCII, was für Kontexte nützlich ist, die mit UTF-8 unzuverlässig sind - ältere E-Mail-Transporte, manche SMS-Gateways oder Systeme, die standardmäßig ISO-8859-1 verwenden. Der Nachteil ist eine deutlich schlechtere Lesbarkeit; deaktiviere die Option, wenn deine Pipeline durchgehend UTF-8 unterstützt.
Kann der Decoder benannte Entities verarbeiten?
Ja. Der Decoder akzeptiert jede benannte Zeichenreferenz aus dem HTML Living Standard, das sind über 2.000 Einträge. Häufige wie <code>&copy;</code>, <code>&reg;</code>, <code>&euro;</code>, <code>&nbsp;</code> und <code>&mdash;</code> werden in ihre Unicode-Äquivalente dekodiert. Der Decoder toleriert auch einige Legacy-Entities, die in alten Browsern ohne abschließendes Semikolon funktionierten, obwohl der Encoder immer die Form mit Semikolon ausgibt.
Ist die Verwendung mit nicht vertrauenswürdigen Eingaben sicher?
Das Kodieren der fünf Sonderzeichen ist die Grundlage der XSS-Prävention, und dieses Werkzeug implementiert diese Kodierung korrekt. Sichere HTML-Ausgabe erfordert jedoch mehr als Entity-Kodierung: Es muss auch vermieden werden, gefährliche Attribute (<code>javascript:</code>-URLs), Skript-Kontexte und unsichere Verwendungen von Benutzereingaben in Inline-Event-Handlern zu verwenden. Bei der Verarbeitung nicht vertrauenswürdiger Inhalte sollte die Kodierung an der Ausgabegrenze im Web-Framework erfolgen, nicht als Kopier-Einfüge-Schritt.
Werden meine Texte an einen Server gesendet?
Nein. Der Codec läuft als Preact-Komponente in deinem Browser-Tab und verwendet ausschließlich In-Memory-Zeichenkettenoperationen. Es gibt keinen Fetch-Aufruf, keinen WebSocket und kein Logging. Nutzer testen häufig die Kodierung sensibler Strings (API-Schlüssel, interne URLs, persönliche Daten), und die lokale Verarbeitung ist dabei wichtig; du kannst dies mit den DevTools-Netzwerkdaten bestätigen, die während der Eingabe keine Anfragen anzeigen.
Wie werden Unicode-Codepunkte über U+FFFF kodiert?
In numerischer Form erscheinen sie als einzelne dezimale oder hexadezimale Referenz - zum Beispiel ist das "Haufen von Kacke"-Emoji <code>💩</code> als <code>&#128169;</code> in dezimal oder <code>&#x1F4A9;</code> in hex dargestellt. JavaScript-Strings speichern diese intern als UTF-16-Surrogatpaare, aber der Encoder wandelt Paare in ihren ursprünglichen Codepunkt um, bevor er die Entity ausgibt. Der Decoder macht das Umgekehrte und setzt das Surrogatpaar wieder zusammen.
Kann ich die Ausgabe direkt in einem XML-Dokument verwenden?
Die Standard-Fünf-Entity-Kodierung entspricht genau dem, was XML 1.0 Abschnitt 4.6 definiert, also ja. Wenn du mit aktivierter Nicht-ASCII- Option kodiert hast, sind numerische Entities ebenfalls gültig in XML. Vermeide benannte Entities jenseits der fünf vordefinierten - <code>&copy;</code>, <code>&nbsp;</code> und andere sind HTML- spezifisch, und ein XML-Parser ohne DTD wird sie ablehnen.
Warum <code>&#39;</code> statt <code>&apos;</code>?
Historische Kompatibilität. Die benannte Entity <code>&apos;</code> ist gültig in XML 1.0 und HTML5, war aber nicht in HTML 4.01 definiert; ältere Internet-Explorer-Versionen und manche E-Mail-Clients zeigen sie wörtlich statt sie zu dekodieren. Die numerische Form <code>&#39;</code> funktioniert überall, wo Entities unterstützt werden, daher verwendet der Encoder sie standardmäßig für den Apostroph.
Was ist mit doppelt kodierten Texten?
Doppelte Kodierung tritt auf, wenn ein Text versehentlich zweimal kodiert wurde - <code>&amp;lt;</code> für <code><</code>. Ein Decode-Durchlauf ergibt <code>&lt;</code>; ein zweiter ergibt <code><</code>. Führe Decode wiederholt aus (die Tausch-Schaltfläche hilft beim Verketten von Operationen), bis die Ausgabe sich nicht mehr ändert. Die Grundursache ist meist ein Webformular, das Daten bei der Übermittlung erneut kodiert; behebe die Pipeline, anstatt manuelles Dekodieren zu verwenden.
Worin unterscheiden sich HTML-Kodierung und URL-Kodierung?
Sie lösen verschiedene Probleme. HTML-Kodierung (dieses Werkzeug) macht Text in HTML-Elementinhalt oder Attributwerten sicher, indem strukturelle Zeichen durch Entities ersetzt werden. URL-Kodierung (Prozent-Kodierung, RFC 3986) macht Text in einer URL sicher, indem reservierte Zeichen durch <code>%XX</code>-Sequenzen ersetzt werden. Ein String in einem Abfrageparameter eines HTML-Links benötigt beides - erst URL-kodiert, um eine gültige URL zu bilden, dann HTML-kodiert, damit die <code>&</code>-Trennzeichen das HTML nicht zerstören. Verwende das URL-Encoder/Decoder-Werkzeug für die andere Richtung.
Mehr Developer Tools
AI Token Counter
Count tokens for GPT-4o, Claude, and Gemini models instantly.
Open toolBase64 Encoder & Decoder
Encode UTF-8 text to Base64 online or decode Base64 back to UTF-8 and plain text. Runs in your browser with no upload.
Open toolBulk URL Encode / Decode
Encode or decode many URLs at once. Paste a newline-separated list and the tool processes each line in parallel, preserving order and blank lines.
Open toolchmod Calculator
Calculate and convert Unix file permission modes between octal and symbolic.
Open toolCode Screenshot
Create beautiful code snippet images with customizable themes.
Open toolColor Converter
Convert colors between HEX, RGB, HSL and CMYK formats.
Open tool