Unsichtbare-Zeichen-Detektor
Versteckte unsichtbare Nullbreiten- und unsichtbare Zeichen im Text finden und entfernen.
Geprüft von ZeroUtil Editorial Team · Zuletzt geprüft
So verwendest du den Unsichtbare-Zeichen-Detektor
- Füge deinen verdächtigen Text in den großen Eingabebereich ein. Der Scan läuft automatisch bei jedem Tastenanschlag, daher musst du keine Schaltfläche klicken.
- Lies die Zusammenfassungskarte oben. Sie listet auf, wie viele unsichtbare Zeichen gefunden wurden, aufgeschlüsselt nach Unicode-Kategorie (Nullbreite, Bidi-Steuerung, Leerzeichen, BOM, Trennzeichen).
- Öffne die Details-Tabelle, um jedes Vorkommen mit seinem Code-Punkt, Unicode-Namen und Byte-Offset in der Eingabe zu sehen, damit du zur exakten Stelle in deinem Editor springen kannst.
- Scrolle die hervorgehobene Vorschau unterhalb der Tabelle. Jedes versteckte Zeichen wird durch ein farbiges Tag wie
[U+200B]ersetzt, damit du den Eindringling visuell lokalisieren kannst. - Klicke auf "Text bereinigen", um jedes erkannte Zeichen an Ort und Stelle zu entfernen, oder auf "Bereinigten Text kopieren", wenn du das Original im Textarea unangetastet lassen möchtest.
- Füge das bereinigte Ergebnis zurück in deinen Editor, Commit oder wohin auch immer der fehlerhafte Text ursprünglich kam.
Intern
Der Detektor geht die Eingabe mit Array.from(str) durch, sodass er über Unicode-Code-Punkte statt UTF-16-Code-Einheiten iteriert, dann prüft er jeden Code-Punkt gegen eine kuratierte Gruppe von Kategorien: Cf (Format-Steuerung), Cc (Steuerung), Zs (Leerzeichen-Trennzeichen außer U+0020), Zl (Zeilentrennzeichen), Zp (Absatztrennzeichen) und eine spezifische Allow-List von Nullbreiten-Joinern, Variationsselektoren und Bidi-Marken. Entscheidungen werden durch den Code-Punkt selbst getroffen, nicht durch das visuelle Rendering des Zeichens, sodass in deiner Systemschriftart fehlende Glyphen keine falsch-positiven Ergebnisse verursachen. Der Hervorhebungs-Pass ersetzt jedes erkannte Zeichen durch ein <span>-Tag mit DOM-Textknoten statt innerHTML, was bedeutet, dass die Vorschau keine ausführbaren Markierungen einführen kann, selbst für pathologische Eingaben.
Warum du Text durch dieses Tool laufen lassen würdest
- Ein kopierter Shell-Befehl schlägt weiterhin mit "Befehl nicht gefunden" fehl, weil ein Nullbreiten-Leerzeichen zwischen
gitundstatusversteckt ist. - Der Zeichenfolgenvergleich deiner Programmiersprache gibt false für zwei Werte zurück, die auf dem Bildschirm identisch aussehen.
- Du hast ein Passwort aus einem Passwortmanager eingefügt und die Authentifizierung schlägt fehl, weil eine bidirektionale Marke mitgereist ist.
- Eine JSON-Datei schlägt mit einem kryptischen "Unerwartetes Token"-Fehler in Spalte 1 fehl wegen einer UTF-8-BOM.
- Du hast einen Word-Dokument-Export erhalten, der weiche Bindestriche (U+00AD) enthält, die grep unterbrechen und in der Wortmitte umbrechen.
- Du prüfst eine KI-generierte Antwort auf Homoglyph-Angriffe oder Trojan-Source-ähnliche versteckte Steuerzeichen, bevor du sie in die Produktion lieferst.
Häufige Fallstricke und Randfälle
- ZWJ-Emoji-Sequenzen. Das Familie-aus-vier-Emoji verbindet vier Personen mit Nullbreiten-Joinern (U+200D). Diese sind absichtlich und das Entfernen bricht das zusammengesetzte Glyphe. Der Detektor markiert sie, aber du solltest sie behalten.
- Variationsselektoren. U+FE0F ändert ein Basiszeichen in seine Emoji-Präsentation (wie das rote Herz). Das Entfernen kann farbige Emojis wieder in normale Text-Glyphen verwandeln.
- Arabische und hebräische Bidi-Marken. U+200E (LRM) und U+200F (RLM) können in Rechts-nach-Links-Text legitim sein. Das blinde Entfernen kann die Satzreihenfolge unterbrechen.
- Die UTF-8-BOM (U+FEFF). In den meisten Texteditoren harmlos, bricht aber Shebang-Parsing (
#!/bin/sh), JSON-Parser und HTTP-Content-Type-Sniffing, wenn sie am Anfang einer Datei erscheint. - Nicht-umbrechendes Leerzeichen (U+00A0). Visuell identisch mit einem normalen Leerzeichen, wird aber von
\sin einigen Regex-Varianten nicht erkannt und schlägt fehl beim Aufteilen mitstr.split(' '). - Tabs und reguläre Leerzeichen werden nicht markiert, weil sie sichtbares Leerzeichen sind. Verwende das Whitespace-Remover-Tool, wenn du sie entfernen musst.
Unicode-Kategoriehintergrund
Jeder Unicode-Code-Punkt ist einer General_Category-Eigenschaft zugewiesen, die ihn in Klassen wie Buchstabe, Zahl, Interpunktion, Symbol, Markierung, Trennzeichen oder Sonstiges einteilt. Die "unsichtbare" Klasse ist keine einzelne Kategorie - es ist eine informelle Vereinigung aus mehreren: Cf (Format-Zeichen wie Nullbreiten-Joiner und Bidi-Marken), Cc (Steuer-Codes wie NULL und der Shell-Piep), Zl und Zp (Zeilen- und Absatztrennzeichen U+2028 und U+2029) und viele der Zs-Leerzeichen-Zeichen jenseits von U+0020 (En-Leerzeichen, Em-Leerzeichen, Haar-Leerzeichen, Mongolischer Vokal-Trenner). Unicode Technical Standard #39 (Unicode-Sicherheitsmechanismen) und das Trojan-Source-Forschungspapier (CVE-2021-42574) dokumentieren, wie diese Zeichen als Waffe eingesetzt werden können, um bösartigen Code an der menschlichen Überprüfung vorbei zu schmuggeln. Unicode UAX #31, das Bezeichner-Syntax behandelt, empfiehlt, Programmiersprachen-Bezeichner auf eine konservative Teilmenge zu beschränken, um solche Angriffe zu verhindern.
Vergleich zu Alternativen
Unter Linux kannst du unsichtbare Zeichen mit cat -A erkennen, das Nicht-Druckbare in Caret-Notation umwandelt, oder mit hexdump -C für Byte-Level-Gewissheit. Editoren wie VS Code, Sublime Text und JetBrains IDEs haben optionales Rendering von Leerzeichen und Bidi-Zeichen, das sie inline enthüllt. Viele Sprachen-Linter (zum Beispiel eslint-plugin-no-bidi und gitleaks) markieren Trojan-Source- und Homoglyph-Angriffe zur Commit-Zeit. Das npm-Paket strip-invisible-characters oder das Python-unicodedata-Modul lassen dich das Bereinigen zur Build-Zeit skripten. Verwende diesen Web-Detektor, wenn du ein Snippet hast, das du über Chat oder E-Mail erhalten hast, und eine sofortige visuelle Aufschlüsselung möchtest, ohne ein Terminal zu öffnen oder Plugins zu installieren - besonders nützlich auf einem Chromebook, einem Telefon oder einem gesperrten Arbeitslaptop.
Häufig gestellte Fragen
Was ist das häufigste unsichtbare Zeichen im Internet?
Nullbreiten-Leerzeichen (U+200B) gewinnt mit weitem Abstand. Es schleicht sich aus Webseiten ein, die es für Zeilenumbruch-Hinweise verwenden, aus Terminal-Ausgaben und aus KI-Chat-Schnittstellen. Weil es null Pixel breit ist, sieht es wie nichts aus, weshalb Fehler so desorientierend sind - alles sieht korrekt aus, bis etwas, das exakte Gleichheit erwartet, nicht passt.
Entfernt das Bereinigen meine Emojis?
Emoji-Basiszeichen sind normale buchstabenähnliche Code-Punkte und werden beibehalten. Das Problem sind Nullbreiten-Joiner in zusammengesetzten Sequenzen - wie Familie-aus-vier oder Regenbogenflagge - die technisch unsichtbar sind. Das Tool markiert sie, damit du es weißt, aber deaktiviere für emoji-sicheres Bereinigen ZWJ-Kategorien, bevor du anwendest.
Ist die UTF-8-BOM tatsächlich unsichtbar?
Auf dem Bildschirm ja, aber semantisch ist es ein Byte-Reihenfolge-Zeichen (U+FEFF), das einige Tools als erstes Zeichen des Streams interpretieren. Notepad unter Windows fügt es gerne jeder Datei voran; die meisten Unix-Tools würgen daran. Der Detektor markiert es immer bei Offset 0, wenn vorhanden. Das Entfernen vor dem Ausliefern von Inhalten an Unix-Shell-Skripte, JSON-Parser oder HTTP-Antworten spart stundenlange Fehlerbehebung.
Sendet das Tool meinen Text irgendwohin?
Nein. Der Detektor ist eine synchrone JavaScript-Funktion, die innerhalb der Seite läuft. Es gibt keinen fetch zu einer API, keinen WebSocket und keine Hintergrundsynchronisation. Du kannst nach dem Laden dieser Seite deine Netzwerkverbindung deaktivieren und jeder folgende Tastenanschlag erzeugt noch einen korrekten Scan. Die Ausgabe-Tabelle und Vorschau werden direkt in den DOM gerendert, ohne den Inhalt zu übertragen.
Warum verhält sich mein Code noch komisch nach dem Bereinigen?
Drei häufige Ursachen: (1) ein Homoglyph statt eines unsichtbaren Zeichens - Kyrillisch er (U+0440) sieht identisch aus zu lateinischem p (U+0070); dieses Tool markiert keine Homoglyphen, weil sie technisch sichtbar sind. (2) Gemischte Zeilenenden (CRLF vs. LF), die dieses Tool nicht als unsichtbar behandelt. (3) Nicht-umbrechende Leerzeichen, die standardmäßig an Ort und Stelle belassen werden. Für Homoglyph-Angriffe ist ein dediziertes Tool oder ein gutes Code-Review erforderlich; Unicode Technical Standard #39 beschreibt die Verwechselbarkeits-Daten, die ihnen zugrunde liegen.
Behandelt das Tool supplementäre-Ebene-Zeichen?
Ja. Die Iteration verwendet Array.from, das Surrogatpaare korrekt in ihren einzelnen Code-Punkt aufteilt, sodass ein Zeichen wie Deseret Long I (U+10400) als eine Einheit statt als zwei behandelt wird. Das ist wichtig, weil viele unsichtbare Zeichen in den supplementären Ebenen (Tag-Zeichen U+E0000-U+E007F zum Beispiel) von einigen Homoglyph-Angriffen verwendet werden und von einer naiven str[i]-Schleife übersehen würden.
Was sind Tag-Zeichen (U+E0000-Bereich)?
Tag-Zeichen sind ein veralteter Unicode-Mechanismus, der 2022 für Emoji-Flag-Sequenzen (wie Schottland oder England-Unterabteilungs-Flaggen) zweckentfremdet und neuerdings in Prompt-Injektions-Angriffen gegen LLMs als Waffe eingesetzt wurde. Sie kodieren unsichtbare Metadaten, die als nichts rendern, aber ändern, wie nachgelagerte Tools die Zeichenfolge interpretieren. Der Detektor markiert den gesamten U+E0000-U+E007F-Block, damit du feindliche Prompts erkennen kannst, bevor du sie in eine KI-Anwendung einfügst.
Kann ich dies verwenden, um eine hochgeladene Datei vor der Aufnahme zu prüfen?
Die Browser-Version ist eine eingefügte Datei auf einmal. Für programmatische Prüfung zur Upload-Zeit verwende einen Regex-basierten Scan in der Backend-Sprache deiner Wahl, zum Beispiel /[---]/. Node's String.prototype.normalize plus eine benutzerdefinierte Allow-List oder das npm-Paket strip-invisible-characters funktionieren beide gut im Maßstab. Behandle dieses Tool als das interaktive Einzel-Pendant zu diesem Backend-Scan.
Was ist ein Trojan-Source-Angriff?
Trojan Source (CVE-2021-42574) ist eine Entdeckung der Cambridge University aus 2021, bei der Unicode-Bidi-Steuerzeichen den Quellcode neu ordnen, sodass er für einen Menschen auf eine Weise gelesen wird, aber auf eine andere ausgeführt wird. Der Detektor markiert U+202A bis U+202E. Moderne Compiler und Git warnen jetzt vor Bidi in Quelldateien.
Beeinflusst das Entfernen unsichtbarer Zeichen RTL-Sprachen?
Es kann. Arabischer, hebräischer, persischer und Urdu-Text enthält oft legitime LRM- und RLM-Marken, um Richtungskontext um Zahlen oder lateinische Einschübe zu disambiguieren. Das blinde Entfernen dieser Marken bricht möglicherweise nichts sofort Sichtbares, kann aber in Randfällen eine falsche Richtungsdarstellung erzeugen. Beim Bereinigen von RTL-Text prüfe das Ergebnis mit einem Muttersprachler oder behalte die Bidi-Marken und entferne nur Kategorien, die offensichtlich bösartig sind (Tag-Zeichen, weiche Bindestriche, BOM).
Gibt es ein gleichwertiges CLI für geskriptetes Bereinigen?
Ja. iconv -f UTF-8 -t UTF-8 -c entfernt ungültige Sequenzen; sed -i 's/\xe2\x80\x8b//g' entfernt U+200B; tr -d behandelt ASCII-Steuerzeichen. Im Maßstab ist Pythons unicodedata plus General_Category-Filterung der Standardansatz.
Verwandte Tools
- Leerzeichen-Entferner
Leerzeichen, doppelte Abstande und Leerzeilen aus Text entfernen oder reduzieren.
- Text umkehren
Text nach Zeichen, Worten oder Zeilen umkehren.
- Zeichenzähler
Zeichen mit plattformspezifischen Limits für Twitter, Instagram und mehr zählen.
- Text-Diff / Vergleich
Zwei Texte nebeneinander vergleichen und Unterschiede hervorheben.
- Suchen und Ersetzen
Text mit Regex-Unterstützung und Groß-/Kleinschreibung-Optionen suchen und ersetzen.
- Doppelte Zeilen entfernen
Doppelte Zeilen aus Text mit Groß-/Kleinschreibung- und Sortieroptionen entfernen.
Mehr Text Tools
Binary to Text
Convert text to binary and binary back to text.
Open toolCase Converter
Convert text between UPPER, lower, Title, Sentence, camelCase, snake_case and more.
Open toolCharacter Counter
Count characters with platform-specific limits for Twitter, Instagram and more.
Open toolEmoji Picker & Search
Search and copy emojis by name or category.
Open toolFancy Text Generator
Generate stylish text with bubbles, squares, upside down and more for social media.
Open toolFind & Replace
Find and replace text with regex support and case-sensitive options.
Open tool