Cerca nel sito

Sequenze di escape: come scrivere caratteri speciali nel codice

Cosa sono \n, \t, \" e \u00A9, perché servono e come usarli in JavaScript, Python e PHP per gestire virgolette, a capo e simboli nelle stringhe.

Scrivi una riga di codice semplicissima: messaggio = "Ha detto "ciao"". La avvii e il programma si ferma con un errore. Eppure la frase è giusta, le virgolette sono al loro posto. Cosa è successo?

Il linguaggio ha letto la prima virgoletta come l’inizio della stringa e la seconda come la fine. Per lui la stringa era solo "Ha detto ", e quel ciao rimasto fuori non significa niente. Per dirgli “questa virgoletta fa parte del testo” serve un segnale: la barra rovesciata, \.

In questa guida ti spiego cosa sono le sequenze di escape come \n, \t, \" e \u00A9, come si usano in JavaScript, Python e PHP, e quali errori evitare. In fondo trovi anche un convertitore per prepararle in un attimo.

Cos’è una sequenza di escape

Una sequenza di escape è una barra rovesciata seguita da uno o più caratteri. Insieme dicono al linguaggio: “il prossimo carattere non va letto come al solito”. La parola viene dall’inglese to escape, sfuggire: il carattere sfugge al suo significato normale.

Fa due lavori opposti, ed è utile tenerli a mente:

  • Rende normale un carattere speciale. \" è una virgoletta da mostrare, non la fine della stringa. \\ è una barra rovesciata vera.
  • Rende speciale una lettera normale. \n non è la lettera n, ma “vai a capo”. \t è una tabulazione.
La stringa "Ciao\nmondo" diventa due righe, Ciao e mondo; la stringa "Dice \"ok\"" diventa il testo Dice "ok" con le virgolette.
Nel codice scrivi la sequenza di escape, nel risultato appare il carattere: un a capo o una virgoletta.

Le sequenze più usate

Queste funzionano quasi uguali in tutti i linguaggi più diffusi. Se ne impari solo una manciata, impara queste.

SequenzaSignificatoJavaScriptPythonPHP (virgolette doppie)
\nA capoSìSìSì
\tTabulazioneSìSìSì
\"Virgolette doppieSìSìSì
\'Apice singoloSìSìSolo tra apici singoli
\\Barra rovesciataSìSìSì
\rRitorno a capo (usato da Windows insieme a \n)SìSìSì
\u00A9Carattere Unicode, qui ©SìSìSi scrive \u{00A9}
\x41Carattere dal codice esadecimale, qui ASìSìSì
Le sequenze di escape più comuni e dove funzionano.

Hai notato \u00A9? Quel 00A9 è il numero del simbolo © nello standard Unicode, lo stesso che compare nell’entità HTML © che hai visto nella tabella delle entità HTML. Cambia il linguaggio, non il numero.

Le sequenze di escape in JavaScript

In JavaScript puoi scrivere le stringhe tra virgolette doppie, apici singoli o apici inversi. Il modo più semplice per evitare gli escape è scegliere il tipo di virgolette che non compare nel testo.

JavaScript
const frase = "Ha detto \"ciao\"";   // virgolette dentro virgolette
const apostrofo = 'L\'ho già visto';       // apice dentro apici
const comoda = 'Ha detto "ciao"';            // nessun escape necessario
const dueRighe = "Prima riga\nSeconda riga";
const simbolo = "\u00A9 2026";              // © 2026
const emoji = "\u{1F600}";                  // 😀, le graffe servono oltre 4 cifre
console.log(simbolo, emoji);

Gli apici inversi creano i “template literal”: puoi andare a capo davvero, senza \n, e usare le virgolette liberamente. In più puoi inserire dei valori con ${…}.

JavaScript
const nome = "Anna";
const messaggio = `Ciao ${nome},
ha detto "ciao" anche a te.`;
const percorso = String.raw`C:\nuova\cartella`;   // le barre restano barre
console.log(percorso);

String.raw è il trucco per i percorsi di Windows e per le espressioni regolari: dentro, le barre rovesciate non vengono interpretate.

Le sequenze di escape in Python

In Python virgolette doppie e apici singoli si comportano allo stesso modo. Le sequenze sono quasi le stesse di JavaScript, con qualche extra comodo.

Python
frase = "Ha detto \"ciao\""
comoda = 'Ha detto "ciao"'              # nessun escape necessario
due_righe = "Prima riga\nSeconda riga"
simbolo = "\u00A9 2026"                 # © 2026
per_nome = "\N{COPYRIGHT SIGN} 2026"    # © 2026, usando il nome Unicode
emoji = "\U0001F600"                    # 😀, otto cifre con la U maiuscola
print(per_nome, emoji)

Per i testi su più righe ci sono le triple virgolette, e per i percorsi le stringhe raw: basta una r davanti, e le barre rovesciate restano barre.

Python
percorso = r"C:\nuova\cartella"
modello = r"\d+"        # espressione regolare: una o più cifre
print(percorso)

Attenzione

Da Python 3.12 una sequenza che non esiste, come "\d" scritto in una stringa normale, produce un SyntaxWarning, e in futuro diventerà un errore. Se vedi questo avviso, quasi sempre la soluzione è usare una stringa raw: r"\d".

Le sequenze di escape in PHP

In PHP la differenza tra apici e virgolette è importante. Tra apici singoli il testo resta quasi così com’è: funzionano solo \' e \\. Tra virgolette doppie PHP interpreta le sequenze di escape e anche le variabili.

PHP
<?php
$nome = 'Anna';
echo 'Ciao $nome\n';      // stampa: Ciao $nome\n
echo "Ciao $nome\n";      // stampa: Ciao Anna e va a capo
echo "Prezzo: \$5\n";     // stampa: Prezzo: $5
echo "\u{00A9} 2026\n";   // stampa: © 2026

Nota il \$: tra virgolette doppie il dollaro apre una variabile, quindi per scriverlo come testo va “sfuggito”. E per i caratteri Unicode, in PHP le graffe sono obbligatorie: \u{00A9}.

Prova il convertitore

Scrivi un testo, anche con virgolette, a capo e simboli, e scegli il linguaggio: ottieni la stringa pronta da incollare nel codice. Funziona anche al contrario: incolla una stringa piena di \n e \u per leggerne il testo.

Gli errori più comuni

  • I percorsi di Windows. In "C:\nuova\tabella" il \n diventa un a capo e il \t una tabulazione. Usa le barre doppie, una stringa raw o, dove possibile, le barre normali /.
  • Le barre nelle espressioni regolari. Una regola come \d scritta in una stringa normale perde la barra. Scrivi "\\d", oppure usa r"\d" in Python e la notazione /\d/ in JavaScript.
  • L’escape doppio. Se nel testo vedi comparire \" o \n invece delle virgolette e degli a capo, la stringa è stata trasformata due volte. È lo stesso problema del &amp; nell’HTML.
  • Gli apici singoli in PHP. '\n' non va a capo: stampa proprio una barra e una n.

Domande frequenti

Cosa significa \n?

È il carattere “a capo”, in inglese line feed. Dentro una stringa, tutto quello che viene dopo \n finisce sulla riga successiva.

Che differenza c’è tra \n e \r\n?

Linux e macOS terminano le righe con \n. Windows usa due caratteri, \r\n, un’eredità delle vecchie macchine da scrivere: prima si torna a inizio riga, poi si scende. Quasi tutti i programmi moderni leggono bene entrambe le versioni.

Come scrivo le virgolette dentro una stringa?

Metti una barra rovesciata prima: \". Oppure, più semplice, racchiudi la stringa con l’altro tipo di virgolette: 'Ha detto "ciao"'.

Come scrivo una barra rovesciata?

Raddoppiala: "\\" produce una sola barra. In Python puoi anche usare una stringa raw, e in JavaScript String.raw.

Cos’è una stringa raw?

È una stringa in cui le barre rovesciate non vengono interpretate. In Python si scrive con una r davanti, come r"C:\nuova". Unico limite: non può finire con una sola barra rovesciata.

Perché Python mi dà “SyntaxWarning: invalid escape sequence”?

Perché nella stringa c’è una barra seguita da un carattere che non forma una sequenza valida, come \d o \p. Succede spesso con le espressioni regolari e con i percorsi di Windows: usa una stringa raw o raddoppia la barra.

Fonti e approfondimenti

Ora sai scrivere qualsiasi carattere in una stringa. Ma hai notato che \u00A9, &#xA9; e U+00A9 usano tutti lo stesso numero? Dietro c’è Unicode, il sistema che dà un numero a ogni carattere del mondo. Nel prossimo articolo ti spiego ASCII, Unicode e UTF-8, e perché a volte una “è” diventa “è”.

Commenti

Nessun commento. Lascia il primo!

Lascia un commento

Accetto la Privacy Policy