Informatica
Codici Unicode, UTF-8 e UTF-16 di un testo
Incolla un testo e vedi ogni carattere con il suo code point, i byte in UTF-8 e UTF-16 e il codice HTML. Oppure scrivi i codici, come U+1F600 o é, e ottieni i caratteri.
Caratteri, code point e byte
Unicode assegna a ogni carattere di ogni scrittura un numero, il code point, scritto come U+ seguito da cifre esadecimali: la A è U+0041, la è accentata U+00E8, l'euro U+20AC, la faccina sorridente U+1F600. Oltre un milione di posizioni, di cui circa 150.000 già usate.
Il code point va poi trasformato in byte. UTF-8, la codifica del web, usa da uno a quattro byte: uno per l'ASCII, due per le lettere accentate, tre per quasi tutto il resto, quattro per emoji e simboli rari. UTF-16, usata da JavaScript, Java e Windows, usa due byte o una coppia di surrogati da quattro.
Per questo la lunghezza di una stringa dipende da che cosa si conta: "😀".length vale 2 in JavaScript, il carattere occupa 4 byte in UTF-8 e all'occhio è uno solo. E una lettera con accento può essere un code point unico o una lettera più un accento combinante: sembrano uguali ma non lo sono.
Errori frequenti
- Tagliare una stringa UTF-8 a un numero di byte fisso: si rischia di spezzare un carattere a metà.
- Contare i caratteri con .length in JavaScript: emoji e caratteri fuori dal piano base valgono 2.
- Confrontare testi senza normalizzarli: é precomposta ed e più accento combinante sono diverse per il computer.
Domande frequenti
Che differenza c'è fra Unicode e UTF-8?
Unicode è l'elenco dei caratteri con il loro numero; UTF-8 è uno dei modi di scrivere quei numeri in byte. Lo stesso testo Unicode può essere salvato in UTF-8, UTF-16 o UTF-32.
Perché vedo caratteri strani come è al posto di è?
Perché un testo in UTF-8 viene letto come Latin-1: i due byte di è, C3 A8, diventano due caratteri separati. Basta dichiarare la codifica giusta.
Come scrivo un carattere Unicode in HTML?
Con un'entità numerica: é in decimale o é in esadecimale. Se la pagina è in UTF-8, puoi anche scrivere il carattere direttamente.
Come funziona questo calcolo
UTF-8: fino a U+007F un byte 0xxxxxxx; fino a U+07FF due byte 110xxxxx 10xxxxxx; fino a U+FFFF tre byte 1110xxxx 10xxxxxx 10xxxxxx; oltre, quattro byte 11110xxx e tre di continuazione. UTF-16: fino a U+FFFF un'unità da 16 bit; oltre, si sottrae 0x10000 e i 20 bit si dividono in due surrogati, 0xD800 + i 10 bit alti e 0xDC00 + i 10 bassi.
Calcoli collegati
Virgola mobile IEEE 754
Come un numero decimale viene memorizzato in float a 32 o 64 bit: segno, esponente, mantissa ed errore.
Convertitore Base64
Da testo, intero, esadecimale o binario a Base64 e ritorno, con i gruppi di 6 bit spiegati.
Unità di memoria e tempo di download
Da byte a gigabyte e gibibyte, e quanto tempo serve a scaricare un file a una data velocità.
Convertitore di colori
Da HEX a RGB, HSL, HSV e CMYK e ritorno, con il contrasto WCAG del testo bianco e nero.