UltKit

HTML-Entities kodieren und dekodieren

Maskieren Sie die Zeichen, die HTML als Markup interpretiert, auf Wunsch auch jedes Nicht-ASCII-Zeichen, oder wandeln Sie Entities wie é und — zurück in normalen Text. Beide Richtungen laufen in Ihrem Browser, und dekodierte Eingaben werden nie als aktives HTML dargestellt.

Modus
Entitätsstil
Maskieren

0 Zeichen · 0 Wörter · 0 Zeilen

0 Zeichen · 0 Wörter · 0 Zeilen

Läuft komplett in diesem Browser-Tab. Ihr Text wird weder hochgeladen noch gespeichert.

Gängige Zeichen und ihre Entitäten

Benannte, dezimale und hexadezimale Formen dekodieren alle zum selben Zeichen. Der Encoder kennt 216 gängige benannte Entitäten; der Decoder versteht jede benannte Referenz des HTML-Standards.

ZeichenBenanntDezimalHex
&&&&
<&lt;&#60;&#x3C;
>&gt;&#62;&#x3E;
"&quot;&#34;&#x22;
'&apos;&#39;&#x27;
(geschütztes Leerzeichen)&nbsp;&#160;&#xA0;
©&copy;&#169;&#xA9;
®&reg;&#174;&#xAE;
™&trade;&#8482;&#x2122;
€&euro;&#8364;&#x20AC;
£&pound;&#163;&#xA3;
¥&yen;&#165;&#xA5;
—&mdash;&#8212;&#x2014;
–&ndash;&#8211;&#x2013;
…&hellip;&#8230;&#x2026;
«&laquo;&#171;&#xAB;
»&raquo;&#187;&#xBB;
°&deg;&#176;&#xB0;
×&times;&#215;&#xD7;
÷&divide;&#247;&#xF7;
é&eacute;&#233;&#xE9;
π&pi;&#960;&#x3C0;
→&rarr;&#8594;&#x2192;
😀—&#128512;&#x1F600;

Von 252 Entities in HTML 4 zu 2.231 in HTML5

Eine Zeichenreferenz ist eine Möglichkeit, ein Zeichen nur mit ASCII zu schreiben. Numerische Referenzen funktionieren für jeden Unicode-Codepoint, dezimal (&#233;) oder hexadezimal (&#xE9;). Benannte Referenzen lassen sich leichter merken: HTML 4 definierte 252 davon, darunter Latin-1-Buchstaben wie &eacute;, griechische Buchstaben, mathematische Symbole und typografische Zeichen wie &mdash; und &hellip;. Merkwürdigerweise war &apos; nicht dabei; es stammt aus XML und wurde erst mit HTML5 in HTML gültig.

HTML5 erweiterte die Liste auf 2.231 benannte Zeichenreferenzen und übernahm dabei den MathML-Entity-Satz, sodass Namen wie &check;, &bigstar; und &NotEqualTilde; heute in jedem aktuellen Browser funktionieren. In dieser Zahl sind auch veraltete Schreibweisen ohne abschließendes Semikolon enthalten, etwa &amp und &copy, die Parser aus Kompatibilitätsgründen weiterhin akzeptieren, die Sie aber nicht schreiben sollten. Der Encoder hier erzeugt die weit unterstützten HTML-4-Namen plus &apos; und greift für alles andere auf eine numerische Referenz zurück; der Decoder übergibt den Text an den Parser des Browsers und versteht daher alle 2.231 Namen.

Was maskiert werden muss und wo Maskieren nicht genügt

Nur & < > " ' ist die Einstellung für den Alltag: Sie maskiert die fünf Zeichen, die einen Textknoten oder ein Attribut in Anführungszeichen beenden können. Das genügt, um ein Codebeispiel auf einer Seite anzuzeigen oder Nutzertext sicher in HTML einzufügen. Auch jedes Nicht-ASCII-Zeichen wandelt é, € und Emoji ebenfalls in Referenzen um, für den seltenen Fall eines Kanals, der kein UTF-8 übertragen kann, etwa manche ältere E-Mail-Vorlagen oder Systeme, die Kodierungen verfälschen. Benannt, Dezimal und Hex ändern nur die Schreibweise einer Referenz; alle drei werden zum selben Zeichen dekodiert. Eine als UTF-8 gespeicherte Seite braucht für Umlaute und andere Akzentbuchstaben keine Entities.

Maskierung schützt nur den HTML-Kontext und sonst nichts. Text in einem Script-Block, einem Inline-Event-Handler wie onclick, einem style-Attribut oder einem href, der mit javascript: beginnen könnte, braucht eine andere Behandlung; Entity-Kodierung allein verhindert dort kein Cross-Site-Scripting. Frameworks wie React maskieren Text standardmäßig, daher ist doppeltes Maskieren in modernen Apps der häufigere Fehler: Nutzer sehen &amp;, wo ein Et-Zeichen stehen sollte. Um Tags komplett zu entfernen, wandeln Sie das Markup mit HTML in TXT um; für Maskierung in URLs nutzen Sie URL kodieren & dekodieren.

Häufig gestellte Fragen

Welche Zeichen müssen in HTML maskiert werden?
Im Text sind & und < die wichtigsten, > wird üblicherweise ebenfalls maskiert. In einem Attributwert maskieren Sie zusätzlich das Anführungszeichen, das ihn begrenzt. Wenn Sie alle fünf maskieren, sind beide Fälle abgedeckt.
Was ist der Unterschied zwischen &nbsp; und einem normalen Leerzeichen?
&nbsp; ist das geschützte Leerzeichen, U+00A0. Es sieht aus wie ein Leerzeichen, verhindert aber an dieser Stelle einen Zeilenumbruch und wird, anders als normale Leerzeichen in HTML, nicht zusammengefasst, wenn mehrere hintereinander stehen.
Warum zeigt meine Seite &amp; statt eines kaufmännischen Und-Zeichens?
Der Text wurde zweimal maskiert: einmal in Ihren Daten und noch einmal durch Ihr Template oder Framework. Speichern Sie Rohtext und lassen Sie genau eine Ebene, meist das Template, die Maskierung bei der Ausgabe übernehmen.
Ist es sicher, HTML aus einer nicht vertrauenswürdigen Quelle hier zu dekodieren?
Ja. Der Decoder verarbeitet die Eingabe als reinen Textinhalt, daher entstehen keine Tags, Skripte werden nicht ausgeführt und Bilder nicht geladen. Nur Entity-Referenzen werden in Zeichen umgewandelt.
Sind benannte oder numerische Entities besser?
Benannte sind leichter lesbar, numerische funktionieren für jedes Zeichen und in jedem XML-Parser. In XML ohne DTD sind nur &amp;, &lt;, &gt;, &quot; und &apos; vordefiniert.