ToolDeck

Escape Stringhe

Esegui l'escape e l'unescape di stringhe per JavaScript, Python e JSON

Prova un esempio

Input

Output

Esegue in locale · Sicuro per incollare segreti
Il risultato apparirà qui…
Modalità:

Cos'è l'Escape delle Stringhe?

L'escape delle stringhe è il processo di inserire una barra rovesciata (o un altro marcatore) prima dei caratteri che hanno un significato speciale all'interno di un letterale stringa. Quando il parser di un linguaggio di programmazione incontra una virgoletta doppia all'interno di una stringa delimitata da virgolette doppie, la interpreta come fine della stringa. Effettuare l'escape della virgoletta con una barra rovesciata — scrivere \" invece di " — indica al parser di trattarla come un carattere letterale e non come un delimitatore. Ogni linguaggio che utilizza letterali stringa ha regole di escape, sebbene le sequenze esatte differiscano.

Le sequenze di escape più comuni corrispondono a spazi bianchi e caratteri di controllo che non possono apparire direttamente nel codice sorgente. Un'interruzione di riga diventa \n, una tabulazione diventa \t e una barra rovesciata letterale diventa \\. Queste convenzioni risalgono al linguaggio di programmazione C (ISO/IEC 9899) e sono state adottate da JavaScript (ECMA-262), Python, Java, Go e Rust. JSON (RFC 8259) utilizza la stessa sintassi ma supporta un insieme più ristretto di sequenze.

L'unescape (talvolta chiamato "de-escaping") è l'operazione inversa: convertire le sequenze di escape nei caratteri originali. Questa operazione è comune quando si leggono file di log, si analizzano risposte API o si esegue il debug di dati che sono stati eseguiti due volte con l'escape. Entrambe le operazioni sono meccaniche e soggette a errori se eseguite manualmente, motivo per cui gli sviluppatori ricorrono a uno strumento di escape/unescape quando lavorano con stringhe multiriga, virgolette incorporate o caratteri Unicode.

Perché Usare uno Strumento Online per l'Escape delle Stringhe?

Aggiungere o rimuovere manualmente le barre rovesciate è tedioso e facile da sbagliare, specialmente con virgolette annidate o input multiriga. Uno strumento di escape per stringhe basato su browser fornisce risultati immediati senza dover configurare un REPL o scrivere script usa e getta.

Conversione immediata
Incolla il testo e ottieni immediatamente il risultato con o senza escape. Nessun bisogno di aprire un terminale, avviare un REPL o scrivere uno script una tantum.
🔀
Passa tra i formati
Alterna tra le modalità di escape JavaScript, Python e JSON. Ogni linguaggio gestisce in modo diverso le virgolette singole, Unicode e i caratteri di controllo — lo strumento applica automaticamente le regole corrette.
🔒
Elaborazione con privacy garantita
Tutte le operazioni di escape e unescape avvengono nel browser tramite JavaScript. Le stringhe non vengono mai inviate a un server, il che è importante quando si lavora con chiavi API, token o dati utente.
📋
Nessun accesso o installazione richiesta
Apri la pagina e inizia a incollare. Non è necessario creare un account, installare estensioni o superare banner di consenso ai cookie.

Casi d'Uso dell'Escape delle Stringhe

Sviluppo Frontend
Esegui l'escape dei contenuti generati dagli utenti prima di inserirli in attributi HTML, script inline o template literal. Previene markup non valido e vettori XSS causati da virgolette o parentesi angolari senza escape.
Integrazione API Backend
Costruisci corpi di richieste JSON con stringhe incorporate che contengono interruzioni di riga, tabulazioni o virgolette. Un escape corretto previene JSON malformato che causerebbe errori 400 dall'API ricevente.
DevOps e Configurazione
Scrivi stringhe con escape per file di configurazione JSON, heredoc YAML o variabili d'ambiente. Una barra rovesciata fuori posto in un Dockerfile ENV o in un ConfigMap di Kubernetes può compromettere un deployment.
QA e Dati di Test
Genera stringhe di test con caratteri di controllo incorporati, sequenze Unicode e virgolette annidate. Queste stringhe con casi limite sono necessarie per verificare che parser e serializzatori gestiscano correttamente i caratteri speciali.
Ingegneria dei Dati
Pulisci dati con doppio escape provenienti da esportazioni CSV, aggregatori di log o dump di database. I campi che passano attraverso più livelli di serializzazione spesso accumulano barre rovesciate in eccesso che devono essere rimosse.
Apprendimento e Debug
Esamina come linguaggi diversi rappresentano la stessa stringa. Studenti e sviluppatori alle prime armi con un linguaggio possono confrontare affiancati l'escape di JavaScript, Python e JSON per comprenderne le differenze.

Riferimento alle Sequenze di Escape

La tabella seguente elenca le sequenze di escape comuni e indica se sono supportate in JavaScript, Python e JSON. Tutti e tre i linguaggi condividono il set principale (interruzione di riga, tabulazione, barra rovesciata, virgoletta doppia), ma differiscono per le virgolette singole, gli escape esadecimali e la notazione Unicode estesa.

SequenzaSignificatoJavaScriptPythonJSON
\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: Escape a Confronto

Sebbene questi tre formati condividano la stessa sintassi basata sulla barra rovesciata, differiscono per le sequenze valide e la gestione dei casi limite. Scegliere la modalità sbagliata produce un output che sembra corretto ma fallisce al momento dell'analisi.

JavaScript
Supporta escape esadecimali \x, \u{'...'} per l'intera gamma Unicode (oltre il BMP), \v per la tabulazione verticale e \0 per il carattere nullo. Sia le virgolette singole che quelle doppie possono essere escapate. I template literal (backtick) evitano la maggior parte delle necessità di escape.
Python
Stesse sequenze principali di JavaScript, più escape esadecimali \x e \N{name} per i caratteri Unicode con nome. Le stringhe raw (r"...") disabilitano completamente l'elaborazione degli escape. Sia le virgolette singole che quelle doppie sono escapabili.
JSON
Il formato più restrittivo. Sono validi solo \" (virgoletta doppia), \\, \/, \n, \r, \t, \b, \f e \uNNNN. Nessun escape per virgolette singole (le stringhe JSON usano sempre virgolette doppie). Nessun escape esadecimale, nessun \v, nessun \0. Qualsiasi carattere di controllo (da U+0000 a U+001F) deve usare la notazione \uNNNN.

Esempi di Codice

Esempi per l'escape e l'unescape di stringhe in JavaScript, Python, Go e dalla riga di comando.

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

Domande Frequenti

Qual è la differenza tra escape ed encoding?
L'escape aggiunge barre rovesciate prima dei caratteri speciali all'interno di un letterale stringa affinché il parser del linguaggio li tratti come dati e non come sintassi. L'encoding trasforma l'intera stringa in una rappresentazione diversa — ad esempio, la codifica Base64 converte dati binari in testo ASCII e la codifica URL sostituisce i caratteri non sicuri con sequenze percentuale-esadecimale. L'escape preserva la leggibilità; l'encoding cambia completamente il formato.
Perché la mia stringa ha doppie barre rovesciate (\\\\) invece di singole?
Le doppie barre rovesciate appaiono quando una stringa viene escapata due volte. Questo accade frequentemente quando i dati passano attraverso più livelli di serializzazione — ad esempio, un valore JSON memorizzato all'interno di un'altra stringa JSON, o una riga di log codificata in JSON prima di essere scritta su file. Per correggere il problema, esegui l'unescape della stringa un livello alla volta fino a raggiungere il contenuto originale.
Come eseguo l'escape di una stringa per JSON in JavaScript?
Usa JSON.stringify(). Racchiude la stringa tra virgolette doppie ed esegue l'escape di tutti i caratteri richiesti da JSON: barre rovesciate, virgolette doppie, interruzioni di riga, tabulazioni e caratteri di controllo inferiori a U+0020. Se vuoi solo il contenuto interno senza le virgolette circostanti, usa JSON.stringify(str).slice(1, -1).
Le stringhe JSON possono contenere virgolette singole?
No. La specifica JSON (RFC 8259) richiede che tutte le stringhe siano delimitate da virgolette doppie. Le virgolette singole non sono delimitatori di stringa validi in JSON. Sebbene alcuni parser permissivi le accettino, qualsiasi parser JSON conforme agli standard rifiuterà una stringa racchiusa tra virgolette singole. Se la tua stringa contiene una virgoletta singola, può apparire così com'è all'interno di JSON con virgolette doppie — nessun escape necessario.
Cos'è una stringa raw in Python?
Una stringa raw (con prefisso r, come r"C:\Users\name") indica all'interprete Python di trattare le barre rovesciate come caratteri letterali anziché come marcatori di escape. È utile per i percorsi di file Windows, le espressioni regolari e qualsiasi stringa in cui le barre rovesciate devono essere preservate. Nota che una stringa raw non può terminare con un numero dispari di barre rovesciate, poiché la barra rovesciata finale eseguirebbe l'escape della virgoletta di chiusura.
Come eseguo l'escape dei caratteri Unicode in JavaScript?
JavaScript supporta due forme di escape Unicode. La sintassi \uNNNN gestisce i caratteri nel Piano Multilingue Base (da U+0000 a U+FFFF), come \u00e9 per 'e con accento acuto'. Per i caratteri al di fuori del BMP (emoji, script rari), usa \u{'NNNNN'} con un massimo di sei cifre esadecimali — ad esempio, \u{1F600} per l'emoji della faccina sorridente. La forma \u{'}' è stata introdotta in ES2015.
L'escape delle stringhe è correlato alla sicurezza (XSS, SQL injection)?
L'escape a livello di linguaggio e l'escape per la sicurezza servono scopi diversi, ma l'idea è la stessa: impedire che i caratteri speciali vengano interpretati come codice. Per la prevenzione XSS, si eseguono l'escape delle entità HTML (<, >, &). Per la SQL injection, si usano query parametrizzate invece dell'escape manuale. Questo strumento gestisce l'escape delle stringhe a livello di linguaggio (sequenze con barra rovesciata), non l'escape HTML o SQL.