Unicode
Unicode è uno standard universale che assegna punti di codice ai caratteri e ai simboli dei sistemi di scrittura di tutto il mondo.
Definizione
Unicode è uno standard per rappresentare testi di molti sistemi di scrittura, oltre a simboli, emoji e controlli. Ogni elemento riceve un punto di codice scritto come U+ e cifre esadecimali, per esempio U+0041 per A e U+20AC per €.
Un punto di codice è un numero astratto, non una sequenza di byte. UTF-8, UTF-16 e UTF-32 definiscono come memorizzarlo o trasmetterlo.
Punti di codice e codifiche
Unicode va da U+0000 a U+10FFFF, con intervalli riservati o non assegnati. UTF-8 usa un byte per ASCII e da due a quattro per gli altri punti assegnati; UTF-16 usa una o due unità da 16 bit.
ASCII è incluso in Unicode: i valori 0–127 mantengono gli stessi punti e la stessa rappresentazione a un byte in UTF-8.
Esempio pratico
Il carattere € è il punto U+20AC. In UTF-8 è memorizzato con i byte E2 82 AC; nel codice sorgente può anche apparire come escape. Sono rappresentazioni diverse dello stesso punto.
Un carattere visibile non equivale sempre a un punto: é può essere U+00E9 oppure U+0065 seguito dal segno combinante U+0301.
Normalizzazione ed errori comuni
La normalizzazione Unicode porta sequenze equivalenti a una forma standard scelta e facilita confronti e ricerche. Va applicata consapevolmente, perché caratteri visivamente simili possono essere davvero distinti.
Il font determina l’aspetto e alcuni emoji o sistemi uniscono più punti in un grafema. Conteggi di byte, punti e caratteri visibili possono quindi differire. Unicode è codifica, non cifratura.
No. Unicode definisce caratteri e punti di codice; UTF-8 è un metodo per codificare quei punti in byte.
Non esiste un numero unico. In UTF-8 un punto usa da uno a quattro byte e un grafema visibile può contenere più punti.
Possono usare sequenze diverse ma canonicamente equivalenti, come una lettera precomposta o lettera più segno combinante. La normalizzazione adatta le uniforma.