araç köşesi

HTML-Sonderzeichen kodieren und dekodieren

Text in HTML-Entities umwandeln oder Entities wieder in echte Zeichen zurückverwandeln

Ihre Daten bleiben bei Ihnen. Die Umwandlung läuft im Browser; nichts wird an einen Server gesendet.

So funktioniert es

Fügen Sie den Text in das linke Feld ein; das Ergebnis entsteht beim Tippen im rechten Feld. Beim Kodieren werden die Zeichen umgeschrieben, die im HTML-Quelltext Ärger machen: Aus "Müller & Söhne" wird im Quelltext "Müller & Söhne", auf der Seite steht weiterhin das Und-Zeichen. Der Umfang bestimmt, wie weit das geht — die notwendigen fünf betreffen nur die strukturbildenden Zeichen und lassen den Text lesbar, der volle Umfang wandelt jedes Zeichen außerhalb von ASCII und ist die sichere Wahl, wenn Sie die Zeichenkodierung der Zielseite nicht kennen, und der deutsche Umfang greift genau dann, wenn nur Umlaute und ß falsch ankommen. Das Dekodieren geht den umgekehrten Weg und erkennt alle drei Schreibweisen: benannt (& ü  ), dezimal (ü) und hexadezimal (ü). Bei den benannten Formen werden alle in HTML definierten Namen aufgelöst, einschließlich Akzentformen wie ç und ñ sowie der mathematischen Zeichen. Eine unbekannte Entity wird nicht gelöscht, sondern unverändert stehen gelassen und in der Statuszeile gezählt — so verlieren Sie keine Daten und sehen, welche Stelle Sie von Hand prüfen sollten. Tags bleiben unangetastet; wollen Sie das Markup entfernen und nur den Text behalten, nutzen Sie HTML in Text umwandeln. Die Ausgabe kopieren Sie mit einem Klick oder laden sie als Textdatei herunter.

Dieses Werkzeug ist auch als html sonderzeichen kodieren, html entities umwandeln, html escape umlaute, umlaute in html schreiben, html entity decoder bekannt.

Was ist HTML-Entity?

Eine HTML-Entity ist die indirekte Schreibweise eines Zeichens im Quelltext: Sie beginnt mit einem Und-Zeichen, endet mit einem Semikolon und trägt dazwischen entweder einen Namen (ü) oder eine Nummer (ü). Zwei Gründe halten sie am Leben. Der erste ist Zwang: Das Kleiner-als-Zeichen gilt im Quelltext als Beginn eines Tags, wer es anzeigen will, muss < schreiben. Der zweite ist Bequemlichkeit: Ein Zeichen, das auf der Tastatur fehlt oder in unbekannter Kodierung unsicher ist (€, —, ½), reist als Entity gefahrlos. Entities stehen nur im Quelltext; beim Zeichnen der Seite werden daraus wieder gewöhnliche Zeichen.

Was ist   (geschütztes Leerzeichen)?

Der Name kommt von non-breaking space, und zwei Eigenschaften unterscheiden es vom gewöhnlichen Leerzeichen. Es trennt nicht um: '5 kg' mit   geschrieben, bleibt die Zahl niemals allein am Zeilenende zurück — deshalb steht es zwischen Zahl und Einheit, in Abkürzungen wie 'z. B.' und zwischen Titel und Namen. Und es wird nicht zusammengefasst: HTML reduziert aufeinanderfolgende Leerzeichen auf eines, jedes   bleibt dagegen erhalten, weshalb alte Seiten damit Einzüge gebaut haben. Als Zeichen steht es an Position 160 in Unicode und ist in kopiertem Text unsichtbar — eine häufige und rätselhafte Ursache für Ausrichtungsfehler.

Was ist Maskieren (Escaping)?

Maskieren heißt, ein Zeichen mit besonderer Bedeutung so zu schreiben, dass das System es als Inhalt und nicht als Syntax liest. Jeder Zusammenhang hat eigene Regeln: In HTML wird aus dem Kleiner-als-Zeichen <, in einer Adresse aus dem Leerzeichen %20, in SQL wird das Hochkomma verdoppelt. Der gemeinsame Kern ist immer derselbe — ohne Maskierung glaubt das System, der Text sei zu Ende, und hält den Rest für Teil der Struktur. In HTML reicht die Folge von einer zerschossenen Darstellung bis dahin, dass fremder Text zu einem wirksamen Tag wird. Deshalb wird jeder von außen kommende Text vor dem Einsetzen maskiert.

Worin unterscheiden sich HTML-Maskierung, Tag-Entfernung und URL-Kodierung?

Alle drei wandeln Text um, doch jede folgt den Regeln eines anderen Zusammenhangs, und keine ersetzt die andere. Die Maskierung auf dieser Seite arbeitet auf Zeichenebene: Der Wortlaut bleibt gleich, nur die im HTML-Quelltext bedeutungstragenden Zeichen werden umgeschrieben, damit der Text als Text erscheint und nicht als Markup. HTML in Text umwandeln geht die umgekehrte Richtung und arbeitet auf Strukturebene: Tags sowie Script- und Style-Blöcke werden verworfen, übrig bleibt der lesbare Inhalt — Eingabe ist HTML, Ausgabe ist reiner Text. URL kodieren und dekodieren gehört in einen ganz anderen Zusammenhang: Dort werden Zeichen, die in einer Adresse nicht vorkommen dürfen, mit Prozentzeichen und zwei hexadezimalen Stellen geschrieben, aus dem Leerzeichen wird %20. Eine HTML-Maskierung macht keine Adresse gültig, und eine Prozentkodierung macht keinen Text seitentauglich. Kurz: Text in eine Seite einsetzen — diese Seite; Text aus einer Seite holen — Tags entfernen; eine Adresse bauen — Prozentkodierung.

Welchen Umfang sollten Sie wählen?

Der Umfang wirkt nur beim Kodieren; beim Dekodieren werden ohnehin alle Entities erkannt. Entscheiden Sie danach, wohin die Ausgabe geht:

  • Fremden Text in eine HTML-Seite einsetzen → die notwendigen fünf (die Struktur ist geschützt, die Lesbarkeit bleibt)
  • Alte E-Mail-Vorlage oder Redaktionsfeld mit unklarer Zeichenkodierung → alle Zeichen außerhalb von ASCII
  • Moderne UTF-8-Seite, die Sie selbst betreuen → die notwendigen fünf genügen; Umlaute zu kodieren bläht die Datei nur auf
  • Nur die Umlaute kommen als Fragezeichen an → deutsche Sonderzeichen
  • Sie schreiben XML statt HTML: dort sind nur fünf benannte Entities definiert, ü wird nicht aufgelöst — nehmen Sie den vollen Umfang mit numerischer Schreibweise

Benannt oder numerisch?

Jedes Zeichen hat zwei Entity-Schreibweisen: benannt (ü) und numerisch (ü oder ü). Die numerische gibt es für jedes Zeichen und sie wird überall aufgelöst; die benannte ist lesbarer, existiert aber nur für die Zeichen der Liste — und es kommt darauf an, welcher Standard diese Liste kennt.

Beim Kodieren nutzt dieses Werkzeug einen Namen nur dann, wenn es ihn seit HTML 4 gibt, und schreibt alles Übrige numerisch. Für das Deutsche geht die Rechnung glatt auf: ä, ö, ü und ß haben seit jeher benannte Formen (ä ö ü ß) und werden auch in betagten E-Mail-Programmen korrekt dargestellt.

Beim Dekodieren ist der Umfang bewusst größer: 254 benannte Entities werden erkannt, darunter auch Namen, die erst mit HTML5 hinzukamen — denn welchen Text Sie vorgesetzt bekommen, suchen Sie sich nicht aus. Dezimale und hexadezimale Verweise werden ebenfalls aufgelöst.

Die Word-Falle: “

In HTML aus älteren Textprogrammen und manchen Redaktionssystemen stehen numerische Entities zwischen 128 und 159: “, —, ’. In Unicode ist dieser Bereich für unsichtbare Steuerzeichen reserviert, wörtlich aufgelöst erscheint also gar nichts oder eine Reihe schwarzer Rauten.

Gemeint sind die typografischen Zeichen des Zeichensatzes Windows-1252: “ ist ein linkes doppeltes Anführungszeichen, ” ein rechtes, — ein Geviertstrich, ’ ein Apostroph. Browser wenden diese Zuordnung stillschweigend an, dieses Werkzeug ebenso. Beim Dekodieren eines alten Archivtextes bleiben Anführungszeichen und Gedankenstriche also erhalten, statt zu verschwinden.

Doppelte Kodierung: derselbe Text zweimal maskiert

Der klassische Fehler beim Maskieren ist, denselben Text zweimal zu kodieren. Aus dem Und-Zeichen wird im ersten Durchgang &; im zweiten wird auch das Und-Zeichen dieser Entity kodiert, und heraus kommt &. Auf der Seite steht dann nicht das Zeichen, sondern die Buchstabenfolge &.

Der Ablauf ist meist derselbe: Ein Formularwert wird beim Speichern maskiert, anschließend maskiert die Vorlagensprache die Ausgabe ein zweites Mal. Das Symptom ist eindeutig — Besucher sehen   oder ä im Fließtext. Die Prüfung ist einfach: Dekodieren Sie den Text hier einmal; bleiben danach noch Entities übrig, wurde er doppelt kodiert und die zweite Maskierung in Ihrer Kette muss weg.

Häufige Fragen

Was ist   und worin unterscheidet es sich vom normalen Leerzeichen?

  ist das geschützte Leerzeichen. Es ist so breit wie ein normales, aber der Browser trennt dort nicht um, und mehrere davon werden nicht zu einem zusammengefasst. Es steht zwischen Zahl und Einheit ('15 kg'), zwischen Abkürzungen wie 'z. B.' und überall dort, wo mehrere sichtbare Leerzeichen nötig sind.

Muss ich Umlaute überhaupt kodieren?

Auf einer UTF-8-Seite nicht; ä, ö, ü und ß können Sie direkt schreiben, die Datei bleibt kleiner. Sinnvoll wird das Kodieren dort, wo Sie den Zeichensatz nicht bestimmen: alte E-Mail-Vorlagen, Verwaltungsoberflächen mit fester Kodierung und Exportfelder, die nur ASCII zulassen.

Entfernt dieses Werkzeug HTML-Tags?

Nein. Das Maskieren arbeitet auf Zeichenebene: Beim Kodieren werden die spitzen Klammern eines Tags zu Entities, das Tag wird also sichtbarer Text; beim Dekodieren bleiben Tags unverändert. Um Markup zu entfernen und nur den Text zu behalten, nutzen Sie HTML in Text umwandeln.

Was geschieht mit einer unbekannten Entity?

Sie bleibt unverändert stehen und wird in der Statuszeile gezählt. Das ist Absicht: Eine unbekannte Folge zu löschen hieße, stillschweigend einen Teil des Textes zu entfernen, sie zu ersetzen hieße, ein womöglich falsches Zeichen zu erfinden.

Wird mein Text an einen Server geschickt?

Nein. Kodieren und Dekodieren laufen vollständig in Ihrem Browser. Kundenkorrespondenz, Bestellhinweise oder unveröffentlichte Seitentexte verlassen diese Seite nicht und werden nirgends gespeichert.