HandyTools Hub

HTML-Encoder/-Decoder

Kodieren oder dekodieren Sie HTML-Entitäten. Schnell, privat und einfach zu bedienen.

Modus:

HTML-Kodierung verwandelt Zeichen, die ein Browser als Markup behandeln würde, in Entitätsreferenzen, die der Browser wörtlich anzeigt. Wenn Sie <strong>hello</strong> als reinen Text in eine Seite einfügen, sieht der Browser ein echtes Fett-Tag; kodieren Sie es vorher, zeigt der Browser das Tag selbst. Dieses Tool kodiert und dekodiert in beide Richtungen, mit einem sicheren Modus für alltägliches Escaping und einem vollen Modus, der jedes Nicht-ASCII-Zeichen in eine numerische Referenz umwandelt. Es ist für Entwickler, technische Redakteure und alle gedacht, die Code als Text anzeigen oder Text aufräumen müssen, der einmal zu oft escaped wurde.

Verwendung

  • Wählen Sie oben Kodieren oder Dekodieren. Die Modus-Schaltflächen tauschen den Platzhaltertext der Eingabe und die Beschriftung der Hauptaktion, sodass Sie auf einen Blick erkennen, welche Richtung aktiv ist.
  • Im Kodieren-Modus wählen Sie Sicher oder Voll. Sicher escaped die fünf Zeichen, die Markup brechen können; voll wandelt zusätzlich jedes Zeichen außerhalb von druckbarem ASCII um.
  • Fügen Sie Text in das linke Feld ein oder tippen Sie ihn. Die Ausgabe aktualisiert sich während der Eingabe, und die Hauptschaltfläche verarbeitet erneut mit dem aktuellen Modus. Große Einfügungen werden im Browser verarbeitet, ohne Rundreise zum Server.
  • Mit Kopieren legen Sie das Ergebnis in die Zwischenablage, mit Herunterladen speichern Sie es als Textdatei, die nach der aktiven Richtung benannt ist. Leeren löscht beide Bereiche.

Sicherer Modus vs. voller Modus

EingabeSicherer ModusVoller Modus
<p>café</p>&lt;p&gt;café&lt;/p&gt;&lt;p&gt;caf&#233;&lt;/p&gt;
He said "hi"He said &quot;hi&quot;He said &quot;hi&quot;
€100€100&#8364;100
A & BA &amp; BA &amp; B

Der sichere Modus ersetzt genau &, <, >, " und ' (der Apostroph wird zu &#39;). Der volle Modus tut dasselbe und ersetzt dann jedes verbleibende Zeichen, dessen Codepunkt unter U+0020 oder über U+007E liegt, durch eine dezimale numerische Referenz. Druckbares ASCII von Leerzeichen bis ~ bleibt unangetastet. Der volle Modus ist die richtige Wahl, wenn die Ausgabe eine Seite oder ein System überstehen muss, das kein UTF-8 deklariert, wenn Sie eine Datei erzeugen, die reines ASCII sein muss, oder wenn unsichtbare Steuerzeichen sichtbar gemacht werden sollen. Der sichere Modus hält den Text für Menschen lesbar, was meist gewünscht ist, wenn das Ziel bereits UTF-8 ist.

HTML-Entities, Zeichenreferenzen und Codepunkte

HTML bietet zwei Wege, ein Zeichen zu schreiben, das Sie nicht direkt tippen können oder wollen. Eine benannte Entität wie &amp; oder &lt; hat einen menschenlesbaren Namen und ist leicht zu erkennen. Eine numerische Zeichenreferenz schreibt den Unicode-Codepunkt des Zeichens, entweder dezimal (&#233;) oder hexadezimal (&#xE9;). Beide Formen bedeuten für einen Browser dasselbe Zeichen. Der volle Modus gibt stets dezimale Referenzen aus, weil sie kompakt und eindeutig sind und weil dezimale Ziffern lesbares ASCII sind. Den Codepunkt zu kennen ist oft der schnellste Weg, eine fremde Referenz von Hand zu entschlüsseln: &#8364; ist dezimal 8364, also U+20AC, das Euro-Zeichen.

Praxisbeispiele

  1. Das Kodieren von <div class="box">Hi</div> ergibt in beiden Modi &lt;div class=&quot;box&quot;&gt;Hi&lt;/div&gt;. Jedes Zeichen ist druckbares ASCII außer den fünf, die escaped werden, deshalb stimmen sicherer und voller Modus überein.
  2. Das Kodieren von Résumé & Co. ergibt im sicheren Modus Résumé &amp; Co. und im vollen Modus R&#233;sum&#233; &amp; Co., weil é U+00E9 ist, dezimal 233.
  3. Das Kodieren einer Zeile mit einem Tabulator und dem Copyright-Zeichen im vollen Modus: Der Tabulator (U+0009) wird zu &#9; und das Copyright-Zeichen (U+00A9) zu &#169;, sodass beide in der Ausgabe sichtbar werden.
  4. Das Dekodieren von &#x48;&#101;&#108;&#108;&#111; ergibt Hello, und das Dekodieren von &lt;b&gt;bold&lt;/b&gt; ergibt <b>bold</b>.

Wie der Decoder Entities behandelt

Der Decoder erkennt sechs benannte Entitäten: &amp;, &lt;, &gt;, &quot;, &#39; und &nbsp;. Außerdem verarbeitet er dezimale Referenzen wie &#233; und hexadezimale Referenzen wie &#xE9; oder &#XE9;. Alles andere wird unverändert durchgereicht, deshalb bleiben &copy;, &euro; und fehlerhafte Fragmente genau so stehen, wie sie geschrieben wurden. Eine Feinheit, die man sich merken sollte: &nbsp; dekodiert zu einem gewöhnlichen Leerzeichen, nicht zu einem geschützten Leerzeichen, weshalb ein dekodierter Absatz anders umbrechen kann als die Originalseite. Ein Round-Trip ist daher nicht immer verlustfrei.

Häufige Fehler

  • Doppelkodierung. Das erneute Kodieren von &lt; ergibt &amp;lt;, was der Browser als wörtlichen Text &lt; anzeigt. Dekodieren Sie zuerst, wenn Sie unsicher sind, ob eine Zeichenkette bereits escaped ist.
  • Den vollen Modus als Sicherheits-Upgrade betrachten. Beide Modi escapen dieselben fünf gefährlichen Zeichen; der volle Modus ändert nur die Darstellung von Nicht-ASCII-Text.
  • Annehmen, jede benannte Entität werde dekodiert. Der Decoder kennt sechs Namen plus numerische Formen, &copy; und &euro; werden Sie also überraschen.
  • Vergessen, dass der volle Modus auch Zeichen escaped, die Sie vielleicht behalten wollten, etwa Tabulatoren, Zeilenumbrüche und unsichtbare Steuerzeichen aus einem eingefügten Dokument.
  • Einen kodierten Wert in ein Attribut ohne Anführungszeichen setzen. Setzen Sie Attributwerte immer in Anführungszeichen, denn Escaping allein macht ein Attribut ohne Anführungszeichen nicht sicher.

Was HTML-Kodierung nicht leistet

Das Escapen der fünf Zeichen verhindert, dass Text als Markup gelesen wird, aber es ist kein Sanitizer. Es validiert keine Eingaben, entfernt keine unerwünschten Tags und entschärft keine gefährlichen URLs wie javascript:. Wenn Sie nicht vertrauenswürdiges HTML rendern müssen, statt es als Text anzuzeigen, kombinieren Sie Escaping mit einem speziellen Sanitizer. Als Faustregel gilt: Escapen, wenn Sie Code oder Nutzertext zeigen; bereinigen, wenn Sie tatsächlich Markup einfügen müssen.

Wo es hilft

Technische Redakteure nutzen es, um HTML-, XML- und SVG-Beispiele in Blogposts und Dokumentation zu zeigen. Entwickler escapen damit von Nutzern eingereichten Text vor dem Rendern. Vorlagenautoren schützen dynamische Werte, die in HTML-E-Mails eingefügt werden. Und alle, die verstümmelten, mit Entities gefüllten Text aus einem Altbestandssystem oder einem übereifrigen CMS dekodieren möchten.

Verwandte Tools

Häufig gestellte Fragen

Was genau escaped der sichere Modus, und was fügt der volle Modus hinzu?

Der sichere Modus ersetzt nur fünf Zeichen: Ampersand, Kleiner-als, Größer-als, doppeltes Anführungszeichen und Apostroph. Der volle Modus escaped dieselben fünf und wandelt anschließend jedes verbleibende Zeichen unterhalb U+0020 oder oberhalb U+007E in eine dezimale numerische Referenz um, sodass das Ergebnis reines ASCII ist.

Warum wurde meine Ausgabe im vollen Modus zu einer Kette von &#NNN;-Codes?

Das ist zu erwarten. Der volle Modus stellt jedes Nicht-ASCII-Zeichen als seinen dezimalen Unicode-Codepunkt dar, ein akzentuierter Buchstabe oder ein Währungszeichen wird also zu etwas wie &#233;. So bleibt der Text auf Seiten oder Systemen lesbar, die keinen UTF-8-Zeichensatz deklarieren.

Ergibt das Dekodieren von &nbsp; ein geschütztes Leerzeichen?

Nein. Dieser Decoder bildet &nbsp; auf ein gewöhnliches Leerzeichen (U+0020) ab, nicht auf ein geschütztes Leerzeichen (U+00A0). Dekodieren und anschließendes Neukodieren stellt die ursprüngliche Entität daher nicht wieder her.

Warum erzeugt das Kodieren von bereits kodiertem Text &amp;lt;?

Das Ampersand in &lt; ist selbst ein Zeichen, das der sichere Modus escaped, aus der Eingabe &lt; wird deshalb &amp;lt;. Das ist Doppelkodierung: Der Browser zeigt den wörtlichen Text &lt; statt des Zeichens <.

Kann der volle Modus Emoji und akzentuierte Buchstaben verarbeiten?

Ja. Der volle Modus läuft die Zeichenkette nach Unicode-Codepunkten ab, ein Emoji wird also als einzelne numerische Referenz wie &#128512; ausgegeben, statt in Surrogat-Hälften zerlegt zu werden.

Reicht HTML-Kodierung aus, um nicht vertrauenswürdiges HTML zu bereinigen?

Nein. Das Kodieren der fünf gefährlichen Zeichen verhindert, dass Text als Markup interpretiert wird, aber es validiert keine Eingaben, entfernt keine Tags und entschärft keine gefährlichen URLs wie javascript:. Um nicht vertrauenswürdiges Markup darzustellen, verwenden Sie einen speziell dafür gebauten Sanitizer.

Geprüft vom HandyTools-Hub-Team · Zuletzt aktualisiert