tigtools

HTML-Entity-Encoder / -Decoder

Machen Sie Text sicher zum Einfügen in HTML oder wandeln Sie Entitäten wie & und é wieder in normale Zeichen um.

Läuft in Ihrem Browser Keine Anmeldung erforderlich

Richtung

& < > " und ' werden immer maskiert. Andere Zeichen werden nur umgewandelt, wenn Sie eine Option für Nicht-ASCII-Zeichen auswählen.

Anleitung

  1. Wählen Sie „Codieren“, um Text für HTML sicher zu machen, oder „Decodieren“, um Entitäten wieder in Zeichen umzuwandeln.
  2. Legen Sie beim Codieren fest, ob Buchstaben mit Akzenten und Symbole unverändert bleiben oder in Entitäten umgewandelt werden sollen.
  3. Geben Sie Ihren Text ein oder fügen Sie ihn ein. Das Ergebnis wird sofort aktualisiert.
  4. Kopieren Sie das Ergebnis oder wählen Sie „Ausgabe als Eingabe verwenden“, um zu prüfen, ob es wieder in den Originaltext decodiert wird.

So funktioniert es

In HTML haben einige Zeichen eine besondere Bedeutung: < leitet ein Tag ein, & leitet eine Entität ein und " oder ' beenden einen Attributwert. Damit sie als Text angezeigt werden, müssen sie als Zeichenreferenzen geschrieben werden: &lt; für <, &gt; für >, &amp; für &, &quot; für " und &#39; für '. Für das Apostroph wird die numerische Form verwendet, da &apos; in HTML 4 nicht definiert ist.

Alle anderen Zeichen, darunter Buchstaben mit Akzenten, chinesische Schriftzeichen und Emojis, können direkt geschrieben werden, wenn die Seite als UTF-8 gespeichert und ausgeliefert wird. Das ist bei modernen Websites die Standardeinstellung. Eine Umwandlung in Entitäten ist nur für Systeme erforderlich, die UTF-8 nicht zuverlässig unterstützen, etwa manche ältere E-Mail-Vorlagen oder Datenbanken. Sie können dann benannte Entitäten wie &eacute; verwenden, sofern ein entsprechender Name existiert (für alle anderen Zeichen wird eine numerische Referenz eingesetzt), oder numerische Referenzen wie &#xE9; für jedes Zeichen.

Beim Dekodieren wird nicht der HTML-Parser des Browsers verwendet. Stattdessen kommt eine integrierte Tabelle mit allen 252 benannten Entitäten aus HTML 4.01, &apos; und etwa 30 häufig verwendeten HTML5-Namen zum Einsatz, ergänzt um dezimale und hexadezimale Referenzen. Numerische Referenzen folgen den HTML5-Regeln: &#0;, Surrogatwerte und Werte über U+10FFFF werden zum Ersatzzeichen �, und die Werte 128–159 werden als Windows-1252 interpretiert, sodass aus &#150; ein Gedankenstrich wird. Einige ältere Namen wie &amp und &copy werden wie in Browsern auch ohne abschließendes Semikolon akzeptiert. HTML5 definiert über 2.000 Namen; seltene Namen, die nicht in der Tabelle stehen, bleiben unverändert und werden aufgelistet.

Text vor dem Einfügen in HTML zu maskieren, ist eine wichtige Schutzmaßnahme gegen Cross-Site-Scripting (XSS). Das ist jedoch nur für Inhalte von HTML-Elementen und in Anführungszeichen gesetzte Attributwerte korrekt. Text innerhalb eines <script>-Blocks, eines style-Attributs oder einer URL muss anders maskiert werden.

Beispiele

Code auf einer Webseite anzeigen

Um <div class="box"> in einem Blogbeitrag als Text anzuzeigen, wandeln Sie es in &lt;div class=&quot;box&quot;&gt; um. Der Browser zeigt dann das ursprüngliche Tag an, statt ein Element zu erstellen.

Text für eine alte E-Mail-Vorlage vorbereiten

Mit „Benannte Entitäten, sofern verfügbar“ wird „Café – 5 €“ zu Caf&eacute; &ndash; 5 &euro;. Das wird auch dann korrekt angezeigt, wenn die E-Mail mit einem Zeichensatz gesendet wird, der UTF-8 nicht unterstützt.

Gescrapten oder exportierten Text bereinigen

Ein CMS-Export enthält Fish &amp; Chips &#8211; &pound;9. Beim Decodieren wird daraus Fish & Chips – £9, bereit zum Einfügen in eine Tabellenkalkulation.

Häufig gestellte Fragen

Welche Zeichen müssen in HTML maskiert werden?

In Elementinhalten müssen & und < maskiert werden (> wird ebenfalls empfohlen). Bei Attributwerten muss außerdem das Anführungszeichen maskiert werden, das den Wert einschließt. Alle fünf Zeichen (& < > " ') überall zu maskieren, ist die einfache und sichere Regel, nach der dieses Tool arbeitet.

Was ist der Unterschied zwischen benannten und numerischen Entitäten?

Benannte Entitäten wie &copy; sind leichter lesbar, gibt es aber nur für eine begrenzte Anzahl von Zeichen. Numerische Referenzen wie &#169; (dezimal) oder &#xA9; (hexadezimal) funktionieren für jedes Unicode-Zeichen, einschließlich Emojis.

Warum wird &nbsp; beim Decodieren in ein Zeichen umgewandelt, das wie ein Leerzeichen aussieht?

&nbsp; ist ein geschütztes Leerzeichen (U+00A0). Es sieht wie ein normales Leerzeichen aus, verhindert aber einen Zeilenumbruch und wird von HTML nicht zusammengefasst. Es ist ein anderes Zeichen als das gewöhnliche Leerzeichen. Das ist wichtig, wenn Sie Text vergleichen oder durchsuchen.

Muss ich Buchstaben mit Akzenten wie é codieren?

Nein, wenn Ihre Seite UTF-8 verwendet (<meta charset="utf-8">), wie es bei fast allen modernen Seiten der Fall ist. Lassen Sie die Standardeinstellung aktiviert; dann werden nur die fünf Sonderzeichen maskiert.

Reicht das Codieren aus, um XSS zu verhindern?

Für nicht vertrauenswürdigen Text, der in HTML-Elementinhalte oder in in Anführungszeichen gesetzte Attributwerte eingefügt wird, reicht das aus. Für JavaScript-Code, CSS, Attribute ohne Anführungszeichen oder URLs wie href="javascript:…" reicht es nicht. Dafür ist eine kontextspezifische Behandlung erforderlich.

Datenschutz

Codierung und Decodierung erfolgen mit einfachen Zeichenkettenoperationen in Ihrem Browser. Ihr Text wird niemals als HTML dargestellt, hochgeladen, gespeichert oder in Analysen einbezogen.