Anleitung
Versteckte Zeichen in VS Code finden
Aktiviere Unicode-Hervorhebung, suche Zeichen ohne Breite mit einem maskierten regulären Ausdruck und bereinige die Datei vor dem nächsten Build oder Diff.
Von Kris Vinters · Veröffentlicht · 3 Min. Lesezeit
Nutze zuerst die Unicode-Hervorhebung von VS Code
Öffne die Einstellungen und suche nach Unicode Highlight. VS Code gruppiert Hinweise in unsichtbare Zeichen, mehrdeutige Zeichen und Nicht-ASCII-Zeichen. Bewege den Mauszeiger über eine Markierung, um den Grund zu sehen. Vorgaben können von Workspace-Vertrauen, Kommentaren, Zeichenketten, Schriftarten und erlaubten Gebietsschemas abhängen. Prüfe deshalb die wirksamen Einstellungen des aktuellen Workspace.
Die drei Haupteinstellungen steuern die Klassen getrennt. Aktiviere die benötigte Klasse, statt jedes Unicode-Zeichen als Fehler zu behandeln. Nicht-ASCII-Buchstaben sind in Übersetzungen, Namen und Testdaten normal; unsichtbare Formatzeichen brauchen eine gezieltere Prüfung.
editor.unicodeHighlight.invisibleCharacterseditor.unicodeHighlight.ambiguousCharacterseditor.unicodeHighlight.nonBasicASCII
Die Hervorhebung hilft bei der Prüfung, ist aber kein vollständiger Sicherheitsscan. VS Code beschreibt die Mehrdeutigkeitsprüfung als heuristisch; Gebietsschema und Schriftart beeinflussen die Bewertung.
Durchsuche die Datei mit einer maskierten Regex
Öffne Suchen, aktiviere reguläre Ausdrücke und gib das gezeigte Muster ein. Es besteht nur aus sichtbarem ASCII, sucht aber U+200B bis U+200D sowie U+FEFF. Prüfe jeden Treffer im Kontext, bevor du ihn ersetzt.
Regex: [\u200B-\u200D\uFEFF]
Der Bereich umfasst ZERO WIDTH SPACE, ZERO WIDTH NON-JOINER, ZERO WIDTH JOINER und das Byte-Order-Mark-Zeichen im Text. Suche zusätzlich nach \u2060, wenn du WORD JOINER brauchst. Lösche einen Verbinder nicht automatisch in Emoji oder verbindenden Schriften, wo er tragend sein kann.
Versteckte Zeichen können einen Bezeichner teilen, zwei Schlüssel ungleich machen, exakte Suche verhindern, Parser-Tokens verändern oder ein Diff in einer scheinbar unveränderten Zeile erzeugen. Ein Byte-Order-Mark am Dateianfang kann außerdem anders behandelt werden als derselbe Codepunkt mitten in der Datei.
U+200B ZERO WIDTH SPACEU+200D ZERO WIDTH JOINERU+FEFF ZERO WIDTH NO-BREAK SPACEU+2060 WORD JOINER
Bereinige den ganzen Text und prüfe danach die Funde
Markiere bei einer Textdatei alles, kopiere es in den Reiniger und prüfe die Funde, bevor du die saubere Fassung zurückkopierst. Der Standarddurchlauf entfernt frei stehende Zeichen ohne Breite, behält einen Verbinder aber, wenn die Engine ihn in einem Emoji oder einer verbindenden Schrift als tragend erkennt.
Für unterstützte .html-Dateien sowie .docx- und .odt-Dokumente im Projekt kannst du den Dokumentbericht verwenden. Beliebige Quellformate nimmt er nicht an. Nutze für .js, .ts, .json oder .md daher den Reiniger für eingefügten Text.
Reiniger für Zeichen ohne Breite öffnenDokumentbericht öffnen
Ein verstecktes Zeichen kann einen Build- oder Diff-Fehler erklären. Es erklärt nicht, wer den umgebenden Code oder Text geschrieben hat. Der Reiniger meldet und ändert Codepunkte; der Stilbericht liefert Messwerte ohne Urheberurteil.
Fragen zu versteckten Zeichen in VS Code
Markiert VS Code standardmäßig jedes unsichtbare Zeichen?
Nein. Vorgaben und Ausnahmen können von Workspace-Vertrauen, Kommentaren, Zeichenketten, erlaubten Zeichen und Gebietsschemas abhängen. Suche in den Einstellungen nach Unicode Highlight und prüfe die wirksamen Werte.
Findet die Regex jedes versteckte Unicode-Zeichen?
Nein. Sie erfasst U+200B bis U+200D und U+FEFF. Ergänze Codepunkte wie \u2060 für WORD JOINER oder lass den Reiniger die breitere Zeichentabelle prüfen.
Warum kann ein Zeichen ohne Breite einen Build brechen?
Parser, Bezeichner, Prüfsummen und exakte Vergleiche arbeiten mit Codepunkten, nicht mit der sichtbaren Form. Ein unsichtbarer Codepunkt kann ein Token teilen oder gleich aussehende Zeichenketten ungleich machen.
Weitere praktische Erklärungen findest du in allen Anleitungen zu versteckten Zeichen und den Grenzen der Reinigung.