bitlvl
DE

Textbereiniger

Text, der aus einem Chat-Assistenten, einer Webseite, einem PDF oder einer Textverarbeitung kopiert wurde, enthält Zeichen, die Sie nicht sehen: Zero-Width-Spaces, geschützte Leerzeichen, weiche Trennstriche, Byte-Order-Marks, Bidi-Steuerzeichen und manchmal ganze versteckte Nachrichten in Unicode-Tag-Zeichen. Dieses Tool zeigt jedes davon und gibt Ihnen den Text ohne sie. Nichts verlässt Ihren Browser.

Entfernen
Normalisieren

Funde

Sichtbar gemacht

Der Originaltext mit jedem versteckten oder verdächtigen Zeichen an seiner Stelle.

Die Ergebnisse und Meldungen dieses Tools werden auf Englisch angezeigt.

Woher die unsichtbaren Zeichen kommen

Keines davon wird absichtlich getippt. Eine Chat-Oberfläche stellt die Antwort des Assistenten als HTML dar, und HTML bringt geschützte Leerzeichen (U+00A0) um Zahlen und nach mancher Interpunktion mit, Zero-Width-Spaces (U+200B), wo ein langes Wort umbrechen durfte, und weiche Trennstriche (U+00AD), wo es getrennt werden durfte. Markdown-Renderer fügen Variantenselektoren neben Symbole. Textverarbeitungen und PDFs fügen typografische Leerzeichen (schmal, haarfein, Halbgeviert, Geviert) und geschwungene Anführungszeichen hinzu. Windows fügt CRLF-Zeilenenden und manchmal eine Byte-Order-Mark (U+FEFF) am Dateianfang hinzu. Beim Kopieren wird all das mit ausgewählt, und das eingefügte Ergebnis sieht identisch aus, während es sich beim Vergleichen, Greppen, Hashen und Kompilieren anders verhält.

Versteckter Text und Wasserzeichen

Unicode hat einen Block von Tag-Zeichen (U+E0000–U+E007F), eines für jedes ASCII-Zeichen, die keine Schrift darstellt. Sie waren für Sprachmarkierungen gedacht und sind heute nur noch in wenigen Flaggen-Emoji gültig. Weil sie unsichtbar sind, aber Kopieren und Einfügen überleben, werden sie benutzt, um eine zweite Nachricht in einer sichtbaren zu verstecken: eine Prompt-Injection in einem Dokument, das ein KI-Assistent lesen wird, ein Fingerabdruck, der verrät, wem der Text gegeben wurde, oder ein Weg, Anweisungen an einem Filter vorbeizuschmuggeln. Derselbe Trick ist mit Folgen von Zero-Width-Zeichen (jedes ein Bit) und mit Variantenselektoren (256 Stück, also eines pro Byte) möglich. Der Bereiniger entfernt alle drei und zeigt bei Tag-Zeichen den dekodierten versteckten Text.

Was er nicht entfernen kann, ist ein statistisches Wasserzeichen, bei dem das Muster in der Wortwahl statt in irgendeinem Zeichen liegt. In diesem Fall gibt es im Text nichts zu entfernen.

Bidi-Steuerzeichen

Rechts-nach-links-Overrides und -Isolate (U+202E, U+2066–2069) ändern die Anzeigereihenfolge des Folgenden. In Quellcode ist das der „Trojan Source“-Angriff (CVE-2021-42574): ein Kommentar, der nach einer Bedingung dargestellt, aber vor ihr kompiliert wird. Compiler und GitHub warnen inzwischen davor; dieses Tool entfernt sie. Der Unicode-Inspektor zeigt jedes mit genauer Position, wenn Sie sehen statt entfernen wollen.

Warum manche Optionen standardmäßig aus sind

  • Typografische Anführungszeichen und Striche sind echte Zeichen, die in Prosa hingehören. Schalten Sie das ein, wenn das Ziel Code, eine Konfigurationsdatei oder eine Shell ist, wo “ nicht " und – nicht - ist.
  • Doppelgänger-Buchstaben (kyrillisches а für lateinisches a) sind nur in sonst lateinischem Text verdächtig; der Bereiniger markiert sie in dem Fall und lässt einen kyrillischen Absatz in Ruhe. Sie zu ersetzen ändert Buchstaben, deshalb ist es eine Entscheidung, kein Standard.
  • Zeichen des privaten Bereichs sind meist Icons aus Icon-Schriften. Anderswo erscheinen sie als Kästchen und sind harmlos.
  • Variantenselektoren werden nur nach Buchstaben und Ziffern entfernt, wo sie keine Aufgabe haben; nach Emoji und Symbolen bestimmen sie die Darstellung und bleiben erhalten.

Auf der Kommandozeile

perl -CSD -pe 's/[\x{200B}-\x{200D}\x{2060}\x{FEFF}\x{00AD}\x{E0000}-\x{E007F}]//g; s/\x{00A0}/ /g' in.txt
sed -i 's/\xC2\xA0/ /g; s/\xE2\x80\x8B//g' file.txt          # NBSP und ZWSP als UTF-8-Bytes
grep -nP '[^\x00-\x7F]' file.txt                              # jede Nicht-ASCII-Zeile zeigen
cat -A file.txt | head                                        # ^M für CR, M-BM- für NBSP

Fragen

Entfernt das KI-Wasserzeichen?

Es entfernt jede Markierung auf Zeichenebene: Zero-Width-Zeichen, Tag-Zeichen, Variantenselektoren und ungewöhnliche Leerzeichen, also die Wege, auf denen Text unsichtbar markiert werden kann. Ein Wasserzeichen, das in der Wortwahl selbst kodiert ist, besteht nicht aus Zeichen und kann von keinem Bereiniger entfernt werden.

Warum enthält Text aus ChatGPT oder Claude versteckte Zeichen?

Meist als Nebeneffekt der Darstellung: Die Antwort wird als HTML angezeigt, und beim Kopieren von HTML kommen geschützte Leerzeichen, Zero-Width-Spaces an Umbruchstellen und typografische Interpunktion mit. Manche Tools und manche Dokumente fügen absichtlich Tag-Zeichen oder Zero-Width-Folgen ein. Die Fundliste sagt Ihnen, was Sie haben.

Macht es Emoji kaputt?

Nein. Der Zero-Width-Joiner, der Emoji-Sequenzen zusammenhält (👨‍👩‍👧), bleibt erhalten, wenn er zwischen zwei Emoji steht; Variantenselektoren nach Emoji und in Keycaps bleiben, ebenso die Tag-Zeichen, aus denen Regionalflaggen bestehen. Nur Joiner zwischen gewöhnlichen Buchstaben werden entfernt.

Wird der Text irgendwohin hochgeladen?

Nein. Die Seite läuft vollständig in Ihrem Browser; nichts wird an einen Server gesendet. Fügen Sie ein, was Sie wollen.

Was ist der Unterschied zum Unicode-Inspektor?

Der Inspektor listet jedes Zeichen mit Codepunkt, Bytes und Namen. Der Bereiniger gruppiert die Probleme, erklärt sie und erzeugt den bereinigten Text. Nehmen Sie den Inspektor zum Untersuchen, den Bereiniger zum Beheben.