bitlvl
DE

String-Escape-Tool

Tippen Sie eine Zeichenkette einmal und lesen Sie sie gleichzeitig für jeden Kontext escaped, oder wählen Sie ein Format und fügen Sie etwas zum Unescapen ein.

 

Die Ergebnisse und Meldungen dieses Tools werden auf Englisch angezeigt.

Escapen hängt vom Kontext ab

Eine Zeichenkette ist nie abstrakt „escaped“; sie wird für eine bestimmte Stelle escaped, in die sie gleich eingefügt wird, und jede Stelle hat eigene Regeln. Derselbe Text braucht \" in JSON, '' in SQL, '\'' in einer Shell und " in HTML. Das falsche zu verwenden ist, wie Injection-Fehler entstehen: HTML-Escaping, bevor Text in einen JavaScript-String kommt, oder Shell-Escaping mit doppelten Anführungszeichen, bei dem $ aktiv bleibt.

KontextWas escaped werden mussWie
JSON-String" \ und Steuerzeichen\" \\ \n \t \u00XX
Shell, einfache Anführungszeichen''\'' (schließen, wörtliches Anführungszeichen, wieder öffnen)
Shell, doppelte Anführungszeichen" \ $ ` und ! in interaktiver bashBackslash
SQL-Literal''' (MySQL akzeptiert auch \')
Regex. * + ? ^ $ { } ( ) [ ] | \ /Backslash
C / Go / Rust / Java" \ Zeilenumbruch Tab\" \\ \n \t \xHH \uHHHH
CSV-Feld, " Zeilenumbruchin Anführungszeichen setzen, Anführungszeichen verdoppeln
HTML- / XML-Text& < > " '&amp; &lt; &gt; &quot; &#39; / &apos;
YAMLAlles Mehrdeutige: yes, no, 1.0, führendes * oder &, DoppelpunkteIn doppelte Anführungszeichen mit JSON-Escapes

Die Shell im Besonderen

Einfache Anführungszeichen sind das einzige vollständig sichere Quoting in POSIX-Shells: Nichts darin wird interpretiert, und das einzige Zeichen, das nicht vorkommen darf, ist das einfache Anführungszeichen selbst; man schreibt es, indem man die Zeichenkette beendet, ein escaptes Anführungszeichen anfügt und neu beginnt: 'it'\''s'. Doppelte Anführungszeichen expandieren weiterhin $variablen, `befehle` und \, sie sind also für den Fall, dass Sie Expansion wollen. Wenn Sie Daten aus Code übergeben, bauen Sie gar keine Kommandozeilen: Verwenden Sie ein Argument-Array (execve, subprocess.run([...]), exec.Command), dann wird Escapen überflüssig.

SQL im Besonderen

Anführungszeichen zu verdoppeln ist korrektes SQL, aber nicht die Art, wie Anwendungen Werte übergeben sollten. Parametrisierte Abfragen ($1, ?, :name) senden den Wert getrennt von der Anweisung und machen Injection unmöglich. Nehmen Sie den SQL-Escaper für Ad-hoc-Abfragen in einer Konsole, nicht im Code.

Fragen

Wie bekomme ich ein einfaches Anführungszeichen in eine einfach gequotete Shell-Zeichenkette?

Die Zeichenkette beenden, ein escaptes Anführungszeichen anfügen, neu beginnen: 'it'\''s'. Oder $'it\'s' in bash/zsh verwenden, das Backslash-Escapes unterstützt.

Warum steht in meinem JSON \u00e9 statt é?

Manche Encoder escapen alles Nicht-ASCII zur Sicherheit in 7-Bit-Kanälen. Es ist trotzdem gültig und dekodiert zur selben Zeichenkette. JSON.stringify in JavaScript und json.dumps mit ensure_ascii=False in Python behalten die Zeichen.

Was ist der Unterschied zwischen Escapen und Kodieren?

Escapen schützt wenige Sonderzeichen, damit Text innerhalb einer Syntax stehen kann; Kodieren (Base64, URL) wandelt die ganze Zeichenkette in ein anderes Alphabet. Base64- und URL-Kodierung sind hier enthalten, weil sie oft im selben Atemzug gebraucht werden.

Kann ich für einen Regex in einer bestimmten Sprache escapen?

Der Regex-Escaper deckt die Metazeichen ab, die alle gängigen Engines teilen (PCRE, JavaScript, Python, Go RE2, Java). Innerhalb einer Zeichenklasse [] zählen nur ] \ ^ und -; das Tool escaped konservativ, damit das Ergebnis überall funktioniert.