BrowserTools
Startseite / Encoder / Unicode-Inspektor

Unicode-Inspektor

Zeigen Sie jedes Zeichen eines Textes mit Codepunkt und Namen an und finden Sie versteckte oder verwechselbare Zeichen.

Unicode-Inspektor wird geladen… Wenn nichts passiert, aktiviere JavaScript.

Ein Text, der auf dem Bildschirm identisch aussieht, kann darunter ganz anders aufgebaut sein. Ein aus einem PDF kopiertes Wort kann einen weichen Trennstrich enthalten, ein Benutzername ein Leerzeichen ohne Breite verstecken, ein Link das lateinische a gegen das kyrillische а tauschen, und ein Umlaut kann als ein einziges Zeichen oder als Grundbuchstabe plus kombinierendes Zeichen gespeichert sein. Der Unicode-Inspektor zerlegt jeden Text in die Zeichen, die Leser wahrnehmen (Graphem-Cluster), und listet jeden darin enthaltenen Codepunkt mit U+-Nummer, offiziellem Unicode-Namen, allgemeiner Kategorie und Block auf. So siehst du genau, womit du es zu tun hast.

Beispiele

Eingabe é (one code point)
Ausgabe U+00E9 LATIN SMALL LETTER E WITH ACUTE

NFC-Form, 2 Byte in UTF-8.

Eingabe é (two code points)
Ausgabe U+0065 + U+0301 COMBINING ACUTE ACCENT

NFD-Form: sieht identisch aus, ist beim Vergleich aber verschieden.

Eingabe pаypal (with Cyrillic а)
Ausgabe U+0430 CYRILLIC SMALL LETTER A

Als Wort mit gemischten Schriften markiert.

Häufig gestellte Fragen

Wie finde ich ein Leerzeichen ohne Breite in meinem Text?
Füge den Text in das Feld ein. Jedes unsichtbare Zeichen erscheint in der Tabelle als beschriftetes Kästchen (ZWSP für das Leerzeichen ohne Breite, ZWJ, WJ, BOM, SHY usw.), und die Warnliste oben zählt sie. Im Bereich Bereinigen kopierst du eine Version ohne diese Zeichen.
Was ist der Unterschied zwischen Zeichen, Codepunkt und Byte?
Ein Codepunkt ist ein nummerierter Eintrag in Unicode, etwa U+00E9 für é. Was Leser als ein Zeichen sehen (ein Graphem), kann aus mehreren Codepunkten bestehen: Ein Emoji mit Hautton und Joiner kann vier oder mehr haben. Bytes hängen von der Kodierung ab: UTF-8 braucht 1 bis 4 Byte pro Codepunkt, UTF-16 2 oder 4. Die Zähler zeigen all das für deinen Text.
Warum stimmen zwei gleich aussehende Zeichenketten nicht überein?
Meist wegen der Normalisierung oder versteckter Zeichen. "Café" kann mit einem vorkomponierten é (NFC) oder mit e plus kombinierendem Akut (NFD) gespeichert sein; beides sieht gleich aus, ist beim Vergleich aber verschieden. Ein geschütztes Leerzeichen, ein Zeichen ohne Breite oder ein ähnlich aussehender kyrillischer Buchstabe wirken genauso. Beide Zeichenketten nach NFC zu normalisieren und unsichtbare Zeichen zu entfernen, löst die meisten Fälle.
Was sind NFC, NFD, NFKC und NFKD?
Das sind die vier Unicode-Normalformen. NFC setzt Zeichen wo möglich zusammen und ist die empfohlene Form für Speicherung und Web. NFD zerlegt sie in Grundbuchstaben und kombinierende Zeichen. Die K-Formen (Kompatibilität) führen zusätzlich ähnliche Varianten auf eine einfache Form zurück: Die Ligatur fi wird zu fi, das hochgestellte ² zu 2 und Vollbreite-Buchstaben zu ASCII. K-Formen verlieren Information, nutze sie daher für Suche und Vergleich, nicht zum Speichern.
Was ist ein Homoglyphen- oder Mischschrift-Angriff?
Dabei werden Zeichen aus einer anderen Schrift verwendet, die wie lateinische Buchstaben aussehen, zum Beispiel das kyrillische а (U+0430) statt des lateinischen a, damit eine gefälschte Domain, ein Benutzername oder ein Dateiname echt wirkt. Der Inspektor markiert jedes Wort, das lateinische mit kyrillischen, griechischen, armenischen oder Cherokee-Buchstaben mischt, und zeigt die genauen Codepunkte, sodass der Austausch sofort auffällt.
Was sind bidirektionale Steuerzeichen und warum werden sie markiert?
Zeichen wie RLO (U+202E) oder RLI (U+2067) weisen die Darstellung an, den folgenden Text von rechts nach links anzuzeigen. Für manche arabischen und hebräischen Texte sind sie nötig, sie können aber auch Inhalte tarnen: Eine Datei namens invoice, dann RLO, dann fdp.exe wird als invoiceexe.pdf angezeigt, und die Trojan-Source-Forschung von 2021 zeigte, dass sich damit Schadlogik in Quellcode verstecken lässt. Außerhalb von echtem Rechts-nach-links-Text sind sie fast immer ein Warnsignal.
Wird mein Text irgendwohin hochgeladen?
Nein. Die Analyse läuft vollständig in deinem Browser. Heruntergeladen wird nur die Unicode-Namenstabelle, die für alle gleich ist und von dieser Website kommt, nicht von Dritten.
Woher stammen die Zeichennamen?
Aus der Unicode Character Database, die das Unicode Consortium unter der Unicode License veröffentlicht; die Version steht unten auf der Seite. Die Namen von CJK-Ideogrammen und Hangul-Silben werden nach den algorithmischen Regeln des Standards erzeugt. Die allgemeine Kategorie liefert die eingebaute Unicode-Unterstützung deines Browsers, daher kann ein sehr neues Zeichen in einem älteren Browser als nicht zugewiesen erscheinen.

Über Unicode-Inspektor

Das Tool markiert die Zeichen, die meistens Ärger machen. Unsichtbare Formatzeichen wie das Leerzeichen ohne Breite, Zero-Width Joiner, Word Joiner und die Byte-Reihenfolge-Markierung (BOM); bidirektionale Steuerzeichen wie RLO und LRI, die Text optisch umsortieren können und die Grundlage des "Trojan Source"-Angriffs auf Quellcode waren; geschützte, schmale und andere ungewöhnliche Leerzeichen, die in Code oder Suche nicht einem normalen Leerzeichen entsprechen; leer aussehende Buchstaben, mit denen leere Namen vorgetäuscht werden; und Wörter, die lateinische mit kyrillischen oder griechischen Buchstaben mischen, der klassische Homoglyphen-Trick hinter Phishing-Domains. Emoji-Sequenzen werden erkannt, die Joiner in 👩🏽‍💻 gelten also nicht als verdächtig.

Klicke auf eine Zeile, um alle Darstellungen dieses Codepunkts zu sehen: UTF-8-Bytes, UTF-16-Codeeinheiten, numerische und benannte HTML-Entities, Escapes für JavaScript, CSS und Python sowie die URL-kodierte Form. Die Zähler über der Tabelle zeigen die Anzahl der Grapheme, Codepunkte, UTF-16-Einheiten (das, was length in JavaScript liefert) und UTF-8-Bytes. Das erklärt, warum eine Datenbankspalte, eine SMS oder ein Tweet deinen Text anders zählen, als du ihn siehst.

Der Bereich Normalisierung vergleicht die vier Unicode-Normalformen (NFC, NFD, NFKC, NFKD) und lässt dich jede kopieren oder untersuchen. So reparierst du Zeichenketten, die gleich aussehen, aber beim Vergleich durchfallen. Der Bereich Bereinigen entfernt schließlich unsichtbare und bidirektionale Zeichen, ersetzt exotische Leerzeichen durch normale, löscht verirrte Steuerzeichen und normalisiert das Ergebnis auf Wunsch, ohne Emoji zu beschädigen. Namen und Blöcke stammen aus der offiziellen Unicode Character Database, und alles läuft lokal in deinem Browser.

UTF-8 entstand auf einem Tischset

Im September 1992 waren Ken Thompson und Rob Pike von den Bell Labs mit der vorgeschlagenen Multibyte-Kodierung für den neuen universellen Zeichensatz unzufrieden. Beim Abendessen in einem Diner in New Jersey skizzierte Thompson auf einem Papier-Tischset ein besseres Schema: ASCII bleibt ein Byte, kein Byte einer Multibyte-Folge kann mit einem ASCII-Zeichen verwechselt werden, und den Anfang eines Zeichens findet man immer an den oberen Bits. Innerhalb weniger Tage setzten sie es im Betriebssystem Plan 9 um.

Dieses Schema ist UTF-8, und seine Abwärtskompatibilität zu ASCII ist der Grund, warum es das Web erobert hat, wo es heute die große Mehrheit der Seiten verwendet. Unicode selbst hatte einige Jahre früher begonnen, mit Joe Beckers Vorschlag von 1988 für einen "Unicode"-Zeichensatz und der ersten Version des Standards im Jahr 1991.

Die Flexibilität, die Unicode universell machte, brachte auch neue Sicherheitsprobleme. 2017 registrierte ein Forscher eine Domain aus lauter kyrillischen Buchstaben, die Browser als apple.com anzeigten, woraufhin die Browser solche Namen in Punycode-Form darstellten. 2021 zeigte das Paper Trojan Source der University of Cambridge, dass bidirektionale Steuerzeichen Quellcode anders aussehen lassen können, als der Compiler ihn liest.

Unterstützen