Warum typografische Anführungszeichen Ihren Code beschadigen (und wie man sie behebt)

Geschweifte Anfuhrungszeichen sehen besser aus als gerade, beschadigen aber still und leise Code, Konfigurationsdateien und CLI-Befehle. Erfahren Sie, wie Sie sie erkennen und beseitigen.

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.