Der stille Saboteur
Sie kopieren einen Code-Ausschnitt aus einem Blogbeitrag, fugen ihn in Ihr Terminal ein und erhalten eine kryptische Fehlermeldung. Der Code sieht korrekt aus. Nach zehn Minuten bemerken Sie: Die Anfuhrungszeichen sind leicht gebogen. Das sind typografische Anfuhrungszeichen (auch geschweifte oder schone Anfuhrungszeichen genannt), und sie zerstoren Code.
Dies ist eine der haufigsten Quellen unsichtbarer Fehler fur Entwickler, insbesondere beim Kopieren aus:
- Textverarbeitungsprogrammen (Microsoft Word, Google Docs)
- CMS-Editoren (WordPress, Medium, Notion)
- PDF-Dokumenten
- Manchen E-Mail-Clients
- KI-generiertem Text, der fur das Lesen und nicht fur die Ausfuhrung formatiert wurde
Gerade versus typografische Anfuhrungszeichen
Gerade Anfuhrungszeichen (was Code erwartet):
', U+0027, ASCII-Apostroph / einfaches Anfuhrungszeichen", U+0022, ASCII-Doppeltes Anfuhrungszeichen
Typografische Anfuhrungszeichen (was Textverarbeitungsprogramme einfugen):
', U+2018, linkes einfaches Anfuhrungszeichen', U+2019, rechtes einfaches Anfuhrungszeichen / Apostroph", U+201C, linkes doppeltes Anfuhrungszeichen", U+201D, rechtes doppeltes Anfuhrungszeichen
Dies sind vollstandig unterschiedliche Unicode-Zeichen. Keine Programmiersprache, Shell oder Konfigurationsformat behandelt sie als aquivalent zu ihren ASCII-Entsprechungen.
Was damit nicht funktioniert
Shell-Befehle, bash, zsh, PowerShell verwenden alle ASCII-Anfuhrungszeichen zur Begrenzung von Zeichenketten. Typografische Anfuhrungszeichen verursachen einen Syntaxfehler oder werden als literale Zeichen im Argument behandelt.
JSON, JSON erfordert U+0022 (") als Zeichenkettenbegrenzer und Schlussel. Typografische doppelte Anfuhrungszeichen verursachen in jedem JSON-Parser einen Parse-Fehler.
Python, JavaScript, PHP, Zeichenkettenliterale mussen ASCII-Anfuhrungszeichen verwenden. Typografische Anfuhrungszeichen fuhren zu einem SyntaxError.
Konfigurationsdateien, YAML, TOML, .env-Dateien, SSH-Konfiguration, alle erwarten ASCII.
CSS, Schriftartnamen und Attributselektoren in Anfuhrungszeichen mussen ASCII verwenden.
Woher typografische Anfuhrungszeichen kommen
Die meisten Textverarbeitungsprogramme wenden eine "Autokorrektur" an, die gerade Anfuhrungszeichen beim Tippen durch geschweifte ersetzt. Das lasst Prosa typografisch korrekter aussehen, macht aber jeden Code im Dokument ungultig.
Wenn Sie Text aus diesen Quellen kopieren und in einen Code-Editor einfugen, kommen die typografischen Anfuhrungszeichen mit. Die meisten Code-Editoren konvertieren sie NICHT automatisch, sie zeigen sie an, aber sie sind fur Code ungultige Zeichen.
Erkennung und Behebung
In einem Code-Editor
Die meisten Editoren unterstutzen die Suche mit regularen Ausdrucken. Das Muster [''""‛‟] findet haufige Varianten typografischer Anfuhrungszeichen. Suchen Sie in Ihrer Datei und ersetzen Sie durch das entsprechende ASCII-Zeichen.
Mit einem Textbereinigungswerkzeug
Der Typografische Bereiniger auf dieser Seite konvertiert alle geschweifen und typografischen Anfuhrungszeichen, Auslassungspunkte, Gedankenstriche und andere typografische Zeichen mit einem Klick zuruck in ihre ASCII-Aquivalente. Text einfugen, bereinigen, zuruckkopieren.
Im Terminal
sed -i "s/\xe2\x80\x98/'/g; s/\xe2\x80\x99/'/g; s/\xe2\x80\x9c/\"/g; s/\xe2\x80\x9d/\"/g" datei.txt
Autokorrektur an der Quelle deaktivieren
In Word: Datei, Optionen, Dokumentprufung, AutoKorrektur-Optionen, Autoformat wahrend der Eingabe, Hakchen bei "Gerade Anfuhrungszeichen durch typografische Anfuhrungszeichen ersetzen" entfernen.
In Google Docs: Extras, Einstellungen, Hakchen bei "Smarte Anfuhrungszeichen" entfernen.
Das Problem mit dem Auslassungszeichen
Das gleiche Problem gilt fur das Auslassungszeichen ... (U+2026), ein einzelnes Zeichen, das wie ... (drei Punkte) aussieht, aber in Code nicht aquivalent ist. Wenn Sie ... in einen regularen Ausdruck oder eine Konfigurationsdatei einfugen, der ... erwartet, schlagt es still fehl.
Kurz zusammengefasst
Typografische Anfuhrungszeichen sind fur das Lesen von Text konzipiert, nicht fur das Schreiben von Code. Sie sind andere Unicode-Zeichen als ASCII-Anfuhrungszeichen und beschadigen jeden Code, jede Konfiguration oder jeden CLI-Befehl, der sie erhalt. Arbeiten Sie beim Schreiben von Code immer in einem Nur-Text-Editor (VS Code, Sublime, Vim) statt in einem Textverarbeitungsprogramm, und bereinigen Sie eingefugten Text vor der Verwendung.