Tutti gli articoli

String Escape: perché lo stesso testo va escapato in modo diverso

L'italiano usa spesso l'apostrofo come parte della parola stessa (elisione): "dell'articolo", "l'utente", "un'altra". Se un testo come Ho letto l'articolo di ieri viene inserito in una stringa JS delimitata da apici singoli, quell'apostrofo va escapato come \', altrimenti la stringa si chiude a metà parola e il codice risultante non è valido — un problema che non si presenta affatto se si scelgono apici doppi o backtick come delimitatore.

Escaping in una stringa JavaScript/JSON

Nei letterali di stringa JS e in JSON, i caratteri speciali si escapano con una barra rovesciata: \" per le virgolette, \n per un a capo, \\ per la barra rovesciata stessa. JSON richiede inoltre che tutte le stringhe usino virgolette doppie — a differenza di JS, dove sono ammesse anche le virgolette singole.

Escaping nei comandi di shell

Sulla riga di comando, i caratteri speciali includono lo spazio, le virgolette, il simbolo del dollaro, l'asterisco e altri — hanno un significato particolare per la shell. Uno spazio in un argomento di comando va escapato, oppure l'intero argomento va racchiuso tra virgolette, altrimenti la shell lo divide in due argomenti separati.

Escaping nelle espressioni regolari

Nelle espressioni regolari, caratteri come il punto, l'asterisco o le parentesi hanno un significato speciale (un carattere qualsiasi, un quantificatore, un gruppo). Per farli corrispondere letteralmente, e non come metacaratteri, si mette una barra rovesciata davanti: \. trova un punto letterale, non "un carattere qualsiasi".

Perché ogni contesto richiede un escaping proprio

Gli errori di "doppio escaping" o "escaping insufficiente" sono tra le cause più comuni di codice non funzionante quando si inserisce testo dell'utente (ad esempio un percorso di file con uno spazio) in un comando o in una stringa. L'escaping corretto dipende da dove esattamente viene inserito il testo, non dal testo in sé.

A cosa serve

  • Preparare testo dell'utente in italiano, apostrofi elisi compresi, per un inserimento sicuro in una richiesta JSON.
  • Costruire un comando di shell con un argomento dinamico senza rischio di command injection.
  • Escapare i caratteri speciali prima di usare il testo come pattern letterale in un'espressione regolare.

Doppio escaping in contesti annidati

Quando un testo attraversa due contesti in sequenza — ad esempio una stringa viene inserita in JSON, e quel JSON viene poi passato come argomento di un comando di shell — l'escaping va applicato nell'ordine corretto: prima per il contesto interno (JSON), poi per quello esterno (shell). Un ordine invertito o un livello saltato è una causa comune per cui una stringa "correttamente escapata" continua comunque a rompersi nella pratica.

Prova lo strumento