ToolDeck

String Escape

Escape en unescape strings voor JavaScript, Python en JSON

Probeer een voorbeeld

Invoer

Uitvoer

Draait lokaal · Veilig om secrets te plakken
Resultaat verschijnt hier…
Modus:

Wat is string escaping?

String escaping is het proces waarbij een backslash (of ander teken) wordt ingevoegd vóór tekens die een speciale betekenis hebben binnen een string literal. Wanneer een parser van een programmeertaal een dubbel aanhalingsteken tegenkomt in een string met dubbele aanhalingstekens, interpreteert hij dit als het einde van de string. Door het aanhalingsteken te escapen met een backslash — \" schrijven in plaats van " — geef je de parser aan dat het om een letterlijk teken gaat, niet om een begrenzer. Elke taal die string literals gebruikt, heeft escape-regels, al verschillen de exacte reeksen per taal.

De meest voorkomende escape-reeksen verwijzen naar witruimte en controletekens die niet direct in broncode kunnen voorkomen. Een nieuwe regel wordt \n, een tab wordt \t, en een letterlijke backslash wordt \\. Deze conventies stammen uit de programmeertaal C (ISO/IEC 9899) en zijn overgenomen door JavaScript (ECMA-262), Python, Java, Go en Rust. JSON (RFC 8259) gebruikt dezelfde syntaxis maar ondersteunt een kleinere set reeksen.

Unescaping (ook wel 'de-escaping' genoemd) is de omgekeerde bewerking: escape-reeksen terugzetten naar hun oorspronkelijke tekens. Dit is gebruikelijk bij het lezen van logbestanden, het verwerken van API-antwoorden of het debuggen van data die dubbel geëscaped is. Beide bewerkingen zijn mechanisch en foutgevoelig wanneer ze met de hand worden uitgevoerd, waardoor ontwikkelaars een escape/unescape-tool gebruiken bij meerlijnige strings, ingesloten aanhalingstekens of Unicode-tekens.

Waarom een online string escape tool gebruiken?

Handmatig backslashes toevoegen of verwijderen is omslachtig en snel fout, zeker bij geneste aanhalingstekens of meerlijnige invoer. Een browsergebaseerde string escape tool geeft direct resultaat zonder een REPL te hoeven openen of wegwerpscripts te schrijven.

Direct resultaat
Plak je tekst en krijg het geëscapede of ongeëscapede resultaat meteen. Je hoeft geen terminal te openen, een REPL te starten of een wegwerpscript te schrijven.
🔀
Schakel tussen formaten
Wissel tussen JavaScript-, Python- en JSON-escapemodi. Elke taal gaat anders om met enkelvoudige aanhalingstekens, Unicode en controletekens — de tool past automatisch de juiste regels toe.
🔒
Privacy-eerst verwerking
Alle escaping en unescaping vindt plaats in je browser met JavaScript. Je strings worden nooit naar een server gestuurd, wat belangrijk is wanneer je werkt met API-sleutels, tokens of gebruikersdata.
📋
Geen login of installatie vereist
Open de pagina en begin met plakken. Er is geen account nodig, geen extensie te installeren en geen cookiemelding die de tool blokkeert.

Toepassingen van string escaping

Frontend-ontwikkeling
Escape door gebruikers gegenereerde inhoud voordat je deze injecteert in HTML-attributen, inline scripts of template literals. Voorkomt kapotte opmaak en XSS-vectors door ongeëscapede aanhalingstekens of punthaken.
Backend API-integratie
Stel JSON-requestbodies samen met ingesloten strings die nieuwe regels, tabs of aanhalingstekens bevatten. Correcte escaping voorkomt misvormde JSON die 400-fouten veroorzaakt bij de ontvangende API.
DevOps en configuratie
Schrijf geëscapede strings voor JSON-configuratiebestanden, YAML heredocs of omgevingsvariabelen. Een verkeerd geplaatste backslash in een Dockerfile ENV of Kubernetes ConfigMap kan een deployment breken.
QA en testdata
Genereer teststrings met ingesloten controletekens, Unicode-reeksen en geneste aanhalingstekens. Deze randgevallen zijn nodig om te verifiëren dat parsers en serializers speciale tekens correct verwerken.
Data-engineering
Ruim dubbel geëscapede data op uit CSV-exports, logaggregators of databasedumps. Velden die meerdere serialisatielagen doorlopen, accumuleren vaak extra backslashes die verwijderd moeten worden.
Leren en debuggen
Onderzoek hoe verschillende talen dezelfde string weergeven. Studenten en ontwikkelaars die nieuw zijn in een taal, kunnen JavaScript-, Python- en JSON-escaping naast elkaar vergelijken om de verschillen te begrijpen.

Overzicht escape-reeksen

De onderstaande tabel toont veelvoorkomende escape-reeksen en of ze worden ondersteund in JavaScript, Python en JSON. Alle drie de talen delen de basisset (nieuwe regel, tab, backslash, dubbel aanhalingsteken), maar wijken af bij enkelvoudige aanhalingstekens, hex-escapes en uitgebreide Unicode-notatie.

ReeksBetekenisJavaScriptPythonJSON
\nNewline (LF)YesYesYes
\rCarriage returnYesYesYes
\tTabYesYesYes
\\BackslashYesYesYes
\"Double quoteYesYesYes
\'Single quoteYesYesNo
\bBackspaceYesYesYes
\fForm feedYesYesYes
\vVertical tabYesYesNo
\0Null characterYesYesNo
\xNNHex byteYesYesNo
\uNNNNUnicode (BMP)YesYesYes
\u{N..}Unicode (full)YesNoNo

JavaScript vs Python vs JSON escaping

Hoewel deze drie formaten dezelfde backslash-syntaxis delen, verschillen ze in welke reeksen geldig zijn en hoe ze randgevallen afhandelen. Het kiezen van de verkeerde modus levert uitvoer op die er correct uitziet maar bij het verwerken faalt.

JavaScript
Ondersteunt \x hex-escapes, \u{...} voor het volledige Unicode-bereik (buiten het BMP), \v voor verticale tab en \0 voor null. Zowel enkelvoudige als dubbele aanhalingstekens kunnen worden geëscaped. Template literals (backticks) voorkomen de meeste escape-behoeften.
Python
Dezelfde kernreeksen als JavaScript, plus \x hex-escapes en \N{naam} voor benoemde Unicode-tekens. Raw strings (r"...") schakelen escape-verwerking volledig uit. Zowel enkelvoudige als dubbele aanhalingstekens zijn escapeable.
JSON
Het meest beperkende formaat. Alleen \" (dubbel aanhalingsteken), \\, \/, \n, \r, \t, \b, \f en \uNNNN zijn geldig. Geen escaping van enkelvoudige aanhalingstekens (JSON-strings gebruiken altijd dubbele aanhalingstekens). Geen hex-escapes, geen \v, geen \0. Elk controleteken (U+0000 t/m U+001F) moet de \uNNNN-notatie gebruiken.

Codevoorbeelden

Voorbeelden voor het escapen en unescapen van strings in JavaScript, Python, Go en de opdrachtregel.

JavaScript
// Escape a string with special characters
const raw = 'Line 1\nLine 2\tTabbed "quoted"';
const escaped = JSON.stringify(raw);
// → '"Line 1\\nLine 2\\tTabbed \\"quoted\\""'

// Unescape a JSON string value
const input = '"Hello\\nWorld"';
const unescaped = JSON.parse(input);
// → "Hello\nWorld" (actual newline character)

// Template literals don't need quote escaping
const tpl = `She said "hello"`;
// → 'She said "hello"' — no backslashes needed

// Escape for use inside a RegExp
const query = 'price: $5.00 (USD)';
const safe = query.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
// → "price: \\$5\\.00 \\(USD\\)"
Python
# Escape with repr() — shows escape sequences
raw = "Line 1\nLine 2\t'quoted'"
print(repr(raw))
# → "Line 1\nLine 2\t'quoted'"

# Raw strings skip escape processing
path = r"C:\Users\name\Documents"
print(path)
# → C:\Users\name\Documents (backslashes kept literal)

# JSON escaping with json module
import json
data = 'He said "hello\nworld"'
escaped = json.dumps(data)
# → '"He said \\"hello\\nworld\\""'

# Unicode escaping
text = "Caf\u00e9"  # → "Café"
print(text.encode('unicode_escape').decode())
# → "Caf\\xe9"
Go
package main

import (
    "fmt"
    "strconv"
    "encoding/json"
)

func main() {
    // strconv.Quote adds escape sequences and wraps in quotes
    raw := "Line 1\nLine 2\t\"quoted\""
    fmt.Println(strconv.Quote(raw))
    // → "\"Line 1\\nLine 2\\t\\\"quoted\\\"\""

    // strconv.Unquote reverses it
    unescaped, _ := strconv.Unquote(`"hello\nworld"`)
    fmt.Println(unescaped)
    // → hello
    //   world

    // JSON marshal handles escaping automatically
    b, _ := json.Marshal("tabs\there & \"quotes\"")
    fmt.Println(string(b))
    // → "tabs\there \u0026 \"quotes\""
}
CLI (Bash)
# Use $'...' syntax for escape sequences in bash
echo $'Line 1\nLine 2\tTabbed'
# → Line 1
#    Line 2	Tabbed

# printf interprets escape sequences
printf 'Path: C:\\Users\\name\n'
# → Path: C:\Users\name

# Use jq to escape a string for JSON
echo 'He said "hello"' | jq -Rs .
# → "He said \"hello\"\n"

# Unescape JSON string with jq
echo '"Line 1\\nLine 2"' | jq -r .
# → Line 1
#    Line 2

Veelgestelde vragen

Wat is het verschil tussen escaping en encoding?
Escaping voegt backslashes toe vóór speciale tekens in een string literal zodat de taalparser ze als data behandelt, niet als syntaxis. Encoding transformeert de volledige string naar een andere representatie — Base64 encoding zet binaire data om naar ASCII-tekst, en URL-encoding vervangt onveilige tekens door percent-hex-reeksen. Escaping behoudt de leesbaarheid; encoding verandert het formaat volledig.
Waarom heeft mijn string dubbele backslashes (\\\\) in plaats van enkele?
Dubbele backslashes verschijnen wanneer een string twee keer is geëscaped. Dit gebeurt vaak wanneer data door meerdere serialisatielagen gaat — bijvoorbeeld een JSON-waarde opgeslagen in een andere JSON-string, of een logregel die JSON-gecodeerd was voordat hij naar een bestand werd geschreven. Los dit op door de string één laag tegelijk te unescapen totdat je de originele inhoud bereikt.
Hoe escape ik een string voor JSON in JavaScript?
Gebruik JSON.stringify(). Dit omhult de string met dubbele aanhalingstekens en escapet alle tekens die JSON vereist: backslashes, dubbele aanhalingstekens, nieuwe regels, tabs en controletekens onder U+0020. Als je alleen de binnenste inhoud wilt zonder de omringende aanhalingstekens, gebruik dan JSON.stringify(str).slice(1, -1).
Kunnen JSON-strings enkelvoudige aanhalingstekens bevatten?
Nee. De JSON-specificatie (RFC 8259) vereist dat alle strings worden begrensd door dubbele aanhalingstekens. Enkelvoudige aanhalingstekens zijn geen geldige stringbegrenzers in JSON. Hoewel sommige soepele parsers ze accepteren, zal elke standaard-conforme JSON-parser een string met enkelvoudige aanhalingstekens afwijzen. Als je string een enkelvoudig aanhalingsteken bevat, kan het zo in dubbele-aanhalingsteken-JSON verschijnen — geen escaping nodig.
Wat is een raw string in Python?
Een raw string (voorafgegaan door r, zoals r"C:\Users\naam") vertelt de Python-interpreter backslashes te behandelen als letterlijke tekens in plaats van escape-markeringen. Dit is handig voor Windows-bestandspaden, reguliere expressies en elke string waarbij backslashes bewaard moeten blijven. Let op: een raw string kan niet eindigen op een oneven aantal backslashes, omdat de laatste backslash het sluitende aanhalingsteken zou escapen.
Hoe escape ik Unicode-tekens in JavaScript?
JavaScript ondersteunt twee Unicode-escape-vormen. De \uNNNN-syntaxis verwerkt tekens in het Basic Multilingual Plane (U+0000 t/m U+FFFF), zoals \u00e9 voor 'e met accent aigu'. Voor tekens buiten het BMP (emoji, zeldzame scripts) gebruik je \u{NNNNN} met maximaal zes hexadecimale cijfers — bijvoorbeeld \u{1F600} voor de grijnzende emoji. De \u{'}-vorm is geïntroduceerd in ES2015.
Is string escaping gerelateerd aan beveiliging (XSS, SQL-injectie)?
Escaping op taalniveau en beveiligingsescaping dienen verschillende doelen, maar het idee is hetzelfde: voorkomen dat speciale tekens als code worden geïnterpreteerd. Voor XSS-preventie escape je HTML-entiteiten (<, >, &). Voor SQL-injectie gebruik je geparametriseerde query's in plaats van handmatige escaping. Deze tool verwerkt escaping op taalniveau (backslash-reeksen), niet HTML- of SQL-escaping.