L'italiano distingue tra accento grave (à, è, ì, ò, ù) e accento acuto (é, usato solo in pochi casi come «perché»), e per Unicode questa distinzione linguistica non conta nulla: ogni vocale accentata, grave o acuta, ha comunque un proprio punto di codice indipendente, quindi \u00e0 (à) e \u00e9 (é) sono codici completamente diversi anche se visivamente simili.
Perché la differenza grave/acuto conta comunque per l'escape
Sostituire per errore una «è» con una «é» in un testo (o viceversa) cambia il punto di codice sottostante, e quindi anche il codice di escape generato — un dettaglio che passa spesso inosservato quando si copia testo da fonti che usano tastiere o correttori automatici diversi.
JSON e le sequenze di escape
La specifica JSON permette di escapare qualsiasi carattere di una stringa come \uXXXX. Questo accade spesso quando i dati vengono generati automaticamente e il serializzatore evita deliberatamente caratteri fuori dall'ASCII per compatibilità — una parola come «città» può quindi apparire in un JSON come una sequenza di codici di escape.
Quando serve
- Leggere, in linguaggio comune, quale testo si nasconde dietro le sequenze di escape in una risposta JSON di una API.
- Preparare una stringa per un ambiente che non accetta caratteri fuori dall'ASCII.
- Diagnosticare problemi di codifica quando si lavora con dati esterni.
Caratteri fuori dal piano base (emoji)
Tutte le vocali accentate italiane rientrano nel piano multilingue di base e si convertono in un solo codice di escape. Le emoji, invece, stanno fuori da questo piano e in JavaScript vengono codificate con due codici — una coppia surrogata come \ud83d\ude00 — cosa che non capita mai con le lettere accentate italiane.