Zum Inhalt springen
jsonbeautifiers
Deutsch
Python Überprüft durch Ausführen des Parsers auf CPython 3.14.3.

Invalid control character at: line L column C (char N)

Eine Zeichenkette enthält ein wörtliches Zeichen unterhalb von U+0020, meist einen echten Zeilenumbruch oder Tabulator. JSON verlangt, dass diese escapt werden. Python hat eine Option strict=False, die sie akzeptiert, aber das entstehende Dokument bleibt für jeden anderen Konsumenten ungültig.

Fügen Sie Ihr JSON ein und sehen Sie genau, wo es bricht

Eingabe

Nichts, was Sie einfügen, verlässt Ihren Browser. Die connect-src Erlaubnisliste macht daraus eine Garantie des Browsers statt eines Versprechens. Selbst überprüfen

Was es tatsächlich auslöst

Sortiert danach, wie oft sich das jeweilige als die Antwort herausstellt.

  1. 01 Mehrzeiliger Text in einer Zeichenkette

    Logauszüge, SQL, Stacktraces und Template-HTML tragen alle echte Zeilenumbrüche.

    Geht kaputt

    json.loads('{"sql": "SELECT *
    FROM t"}')

    Funktioniert

    json.loads('{"sql": "SELECT *\\nFROM t"}')
  2. 02 Mit f-Strings oder Verkettung zusammengebautes JSON

    Interpolierte Werte werden nicht escapt. Bauen Sie ein dict und verwenden Sie json.dumps, das alles korrekt escapt.

    Geht kaputt

    body = f'{{"note": "{note}"}}'

    Funktioniert

    body = json.dumps({"note": note})
  3. 03 Ein aus einer Tabellenkalkulation kopierter Tabulator

    Unsichtbar, und er übersteht Copy-and-paste unversehrt.

Derselbe Fehler in anderen Laufzeitumgebungen

Das zugrunde liegende Problem ist identisch; nur der Wortlaut unterscheidet sich. Meldet eine Kollegin eine dieser Zeilen, sieht sie genau dasselbe wie Sie.

JavaScript (V8) Bad control character in string literal in JSON at position 11 (line 1 column 12)

Häufige Fragen

Was macht strict=False?
json.loads(s, strict=False) erlaubt Steuerzeichen in Zeichenketten. Das bringt Sie weiter, aber das Dokument bleibt ungültiges JSON, sodass alles weiter unten in der Kette, was nicht Python ist, es weiterhin ablehnt. Reparieren Sie stattdessen den Erzeuger.

Jetzt beheben

Fügen Sie das Payload in das Werkzeug oben ein, oder gehen Sie direkt zu dem, das für diesen Zweck gebaut wurde.

Die Zeichenkette korrekt escapen