String escaping är processen att infoga ett bakåtstreck (eller annan markör) före tecken som har speciell betydelse inuti en strängliteral. När en programmeringsspråksparser stöter på ett dubbelt citattecken inuti en dubbelciterad sträng tolkar den det som strängslut. Att escapa citattecknet med ett bakåtstreck — skriva \" i stället för " — talar om för parsern att behandla det som ett bokstavligt tecken, inte en avgränsare. Varje språk som använder strängliteraler har escapingregler, men de exakta sekvenserna skiljer sig åt.
De vanligaste escape-sekvenserna avbildas på blanksteg och kontrolltecken som inte kan förekomma direkt i källkod. Ett radmatning blir \n, en tabb blir \t och ett bokstavligt bakåtstreck blir \\. Dessa konventioner härstammar från programspråket C (ISO/IEC 9899) och har antagits av JavaScript (ECMA-262), Python, Java, Go och Rust. JSON (RFC 8259) använder samma syntax men stödjer en mindre uppsättning sekvenser.
Unescaping (ibland kallat "de-escaping") är den omvända operationen: att konvertera escape-sekvenser tillbaka till sina ursprungliga tecken. Det är vanligt när man läser loggfiler, tolkar API-svar eller felsöker data som har dubbeleskapats. Båda operationerna är mekaniska och felbenägna när de utförs för hand, vilket är anledningen till att utvecklare använder ett escape/unescape-verktyg när de arbetar med flerradssträngar, inbäddade citattecken eller Unicode-tecken.
Varför använda ett online string escape-verktyg?
Att manuellt lägga till eller ta bort bakåtstreck är omständligt och lätt att göra fel, särskilt med kapslade citattecken eller flerradsinmatning. Ett webbläsarbaserat string escape-verktyg ger omedelbara resultat utan att behöva konfigurera en REPL eller skriva tillfälliga skript.
⚡
Omedelbar konvertering
Klistra in din text och få det escapade eller unescapade resultatet direkt. Inget behov av att öppna en terminal, starta en REPL eller skriva ett engångsskript.
🔀
Växla mellan format
Växla mellan JavaScript-, Python- och JSON-escapinglägen. Varje språk hanterar enkla citattecken, Unicode och kontrolltecken på olika sätt — verktyget tillämpar rätt regler automatiskt.
🔒
Integritetsfokuserad bearbetning
All escaping och unescaping sker i din webbläsare med JavaScript. Dina strängar skickas aldrig till en server, vilket är viktigt när du arbetar med API-nycklar, tokens eller användardata.
📋
Ingen inloggning eller installation krävs
Öppna sidan och börja klistra in. Inget konto att skapa, inget tillägg att installera och ingen cookie-vägg som blockerar verktyget.
Användningsfall för string escaping
Frontend-utveckling
Escapa användargenererat innehåll innan det injiceras i HTML-attribut, inline-skript eller malliteraler. Förhindrar trasig markup och XSS-vektorer från unescapade citattecken eller vinkelparenteser.
Backend API-integration
Bygg JSON-förfrågningskroppar med inbäddade strängar som innehåller radmatningar, tabbar eller citattecken. Korrekt escaping förhindrar felformaterad JSON som skulle orsaka 400-fel från det mottagande API:et.
DevOps och konfiguration
Skriv escapade strängar för JSON-konfigfiler, YAML heredocs eller miljövariabler. Ett felplacerat bakåtstreck i en Dockerfile ENV eller Kubernetes ConfigMap kan bryta en driftsättning.
QA och testdata
Generera teststrängar med inbäddade kontrolltecken, Unicode-sekvenser och kapslade citattecken. Dessa kantfallssträngar behövs för att verifiera att parsers och serialiserare hanterar specialtecken korrekt.
Datateknik
Städa upp dubbeleskapad data från CSV-exporter, loggaggregerade eller databasdumpar. Fält som passerar genom flera serialiseringslager ackumulerar ofta extra bakåtstreck som behöver tas bort.
Lärande och felsökning
Undersök hur olika språk representerar samma sträng. Studenter och utvecklare som är nya i ett språk kan jämföra JavaScript-, Python- och JSON-escaping sida vid sida för att förstå skillnaderna.
Referens för escape-sekvenser
Tabellen nedan listar vanliga escape-sekvenser och om de stöds i JavaScript, Python och JSON. Alla tre språken delar kärnuppsättningen (radmatning, tabb, bakåtstreck, dubbelt citattecken), men skiljer sig åt när det gäller enkla citattecken, hex-escape och utökad Unicode-notation.
Sekvens
Betydelse
JavaScript
Python
JSON
\n
Newline (LF)
Yes
Yes
Yes
\r
Carriage return
Yes
Yes
Yes
\t
Tab
Yes
Yes
Yes
\\
Backslash
Yes
Yes
Yes
\"
Double quote
Yes
Yes
Yes
\'
Single quote
Yes
Yes
No
\b
Backspace
Yes
Yes
Yes
\f
Form feed
Yes
Yes
Yes
\v
Vertical tab
Yes
Yes
No
\0
Null character
Yes
Yes
No
\xNN
Hex byte
Yes
Yes
No
\uNNNN
Unicode (BMP)
Yes
Yes
Yes
\u{N..}
Unicode (full)
Yes
No
No
JavaScript vs Python vs JSON-escaping
Även om dessa tre format delar samma bakåtstrecksbaserade syntax skiljer de sig åt i vilka sekvenser som är giltiga och hur de hanterar kantfall. Att välja fel läge ger utdata som ser korrekt ut men misslyckas vid tolkningstillfället.
JavaScript
Stödjer \x hex-escape, \u{...} för hela Unicode-omfånget (utanför BMP), \v för vertikalt tab och \0 för null. Både enkla och dubbla citattecken kan escapas. Malliteraler (backticks) undviker de flesta escapingbehov.
Python
Samma kärnsekvenser som JavaScript, plus \x hex-escape och \N{namn} för namngivna Unicode-tecken. Raw strings (r"...") inaktiverar escape-bearbetning helt. Både enkla och dubbla citattecken kan escapas.
JSON
Det mest restriktiva formatet. Endast \" (dubbelt citattecken), \\, \/, \n, \r, \t, \b, \f och \uNNNN är giltiga. Ingen escaping av enkla citattecken (JSON-strängar använder alltid dubbla citattecken). Inga hex-escape, ingen \v, ingen \0. Alla kontrolltecken (U+0000 till U+001F) måste använda \uNNNN-notation.
Kodexempel
Exempel för att escapa och unescapa strängar i JavaScript, Python, Go och på kommandoraden.
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"
# 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
Vanliga frågor
Vad är skillnaden mellan escaping och kodning?
Escaping lägger till bakåtstreck före specialtecken i en strängliteral så att språkparsern behandlar dem som data, inte syntax. Kodning omvandlar hela strängen till en annan representation — till exempel konverterar Base64-kodning binärdata till ASCII-text, och URL-kodning ersätter osäkra tecken med procent-hex-sekvenser. Escaping bevarar läsbarheten; kodning ändrar formatet helt.
Varför har min sträng dubbla bakåtstreck (\\\\) i stället för enkla?
Dubbla bakåtstreck visas när en sträng har escapats två gånger. Det inträffar ofta när data passerar genom flera serialiseringslager — till exempel ett JSON-värde lagrat inuti en annan JSON-sträng, eller en loggpost som JSON-kodades innan den skrevs till en fil. Åtgärda det genom att unescapa strängen ett lager i taget tills du når det ursprungliga innehållet.
Hur escapar jag en sträng för JSON i JavaScript?
Använd JSON.stringify(). Den omsluter strängen med dubbla citattecken och escapar alla tecken som JSON kräver: bakåtstreck, dubbla citattecken, radmatningar, tabbar och kontrolltecken under U+0020. Om du bara vill ha det inre innehållet utan de omgivande citattecknen använder du JSON.stringify(str).slice(1, -1).
Kan JSON-strängar innehålla enkla citattecken?
Nej. JSON-specifikationen (RFC 8259) kräver att alla strängar avgränsas med dubbla citattecken. Enkla citattecken är inte giltiga strängavgränsare i JSON. Även om vissa toleranta parsers accepterar dem kommer alla standardenliga JSON-parsers att avvisa en sträng omsluten av enkla citattecken. Om din sträng innehåller ett enkelt citattecken kan det förekomma som det är inuti dubbelciterad JSON — ingen escaping behövs.
Vad är en raw string i Python?
En raw string (med prefixet r, som r"C:\Users\name") talar om för Python-tolken att behandla bakåtstreck som bokstavliga tecken i stället för escape-markeringar. Det är användbart för Windows-filsökvägar, reguljära uttryck och alla strängar där bakåtstreck ska bevaras. Observera att en raw string inte kan sluta med ett udda antal bakåtstreck, eftersom det avslutande bakåtstrecket då skulle escapa det avslutande citattecknet.
Hur escapar jag Unicode-tecken i JavaScript?
JavaScript stödjer två Unicode-escapformer. Syntaxen \uNNNN hanterar tecken i Basic Multilingual Plane (U+0000 till U+FFFF), till exempel \u00e9 för 'e med akut'. För tecken utanför BMP (emoji, sällsynta skript) används \u{NNNNN} med upp till sex hexadecimala siffror — till exempel \u{1F600} för det leende ansiktet. Formen \u{'} introducerades i ES2015.
Är string escaping relaterat till säkerhet (XSS, SQL-injektion)?
Escaping på språknivå och säkerhetsescaping tjänar olika syften, men tanken är densamma: förhindra att specialtecken tolkas som kod. För XSS-skydd escapar du HTML-entiteter (<, >, &). För SQL-injektion använder du parameteriserade frågor i stället för manuell escaping. Det här verktyget hanterar escaping på strängnivå (bakåtstreckssekvenser), inte HTML- eller SQL-escaping.