Una spiegazione della codifica dei caratteri Unicode
RUNSTUDIO/The Image Bank/Getty Images
Affinché un computer sia in grado di memorizzare testo e numeri comprensibili agli esseri umani, è necessario che ci sia un codice che si trasformi personaggi in numeri. Lo standard Unicode definisce tale codice utilizzando la codifica dei caratteri.
Il motivo per cui la codifica dei caratteri è così importante è che ogni dispositivo può visualizzare le stesse informazioni. Uno schema di codifica dei caratteri personalizzato potrebbe funzionare brillantemente su un computer, ma si verificheranno problemi se invii lo stesso testo a qualcun altro. Non saprà di cosa stai parlando a meno che non capisca anche lo schema di codifica.
Codifica dei caratteri
Tutto ciò che fa la codifica dei caratteri è assegnare un numero a ogni carattere che può essere utilizzato. Potresti creare una codifica dei caratteri in questo momento.
Ad esempio, potrei dire che la lettera UN diventa il numero 13, a=14, 1=33, #=123 e così via.
È qui che entrano in gioco gli standard a livello di settore. Se l'intero settore informatico utilizza lo stesso schema di codifica dei caratteri, ogni computer può visualizzare gli stessi caratteri.
Cos'è Unicode?
ASCII (codice standard americano per lo scambio di informazioni) è diventato il primo schema di codifica diffuso. Tuttavia, è limitato a sole 128 definizioni di caratteri. Questo va bene per i caratteri, i numeri e la punteggiatura inglesi più comuni, ma è un po' limitante per il resto del mondo.
Naturalmente, anche il resto del mondo vuole lo stesso schema di codifica per i propri personaggi. Tuttavia, per un po', a seconda di dove ti trovavi, potrebbe essere stato visualizzato un carattere diverso per lo stesso codice ASCII.
Alla fine, le altre parti del mondo hanno iniziato a creare i propri schemi di codifica e le cose hanno iniziato a confondersi. Non solo gli schemi di codifica erano di diversa lunghezza, ma i programmi dovevano capire quale schema di codifica avrebbero dovuto usare.
È diventato evidente che era necessario un nuovo schema di codifica dei caratteri, quando è stato creato lo standard Unicode. L'obiettivo di Unicode è unificare tutti i diversi schemi di codifica in modo da limitare il più possibile la confusione tra i computer.
In questi giorni, lo standard Unicode definisce valori per oltre 128.000 caratteri e può essere visualizzato su Consorzio Unicode . Ha diverse forme di codifica dei caratteri:
- UN è U+0041
- un è U+0061
- 1 è U+0031
- # è U+0023
Nota: UTF significa Unità di trasformazione Unicode.
Punti di codice
Un punto di codice è il valore assegnato a un carattere nello standard Unicode. I valori secondo Unicode sono scritti come numeri esadecimali e hanno il prefisso di U+ .
Ad esempio, per codificare i caratteri che abbiamo visto in precedenza:
Questi punti di codice sono suddivisi in 17 diverse sezioni chiamate piani, identificati dai numeri da 0 a 16. Ogni piano contiene 65.536 punti di codice. Il primo piano, 0, contiene i caratteri più comunemente usati ed è noto come Basic Multilingual Plane (BMP).
Unità di codice
Gli schemi di codifica sono costituiti da unità di codice, che vengono utilizzate per fornire un indice di dove un carattere è posizionato su un piano.
Considera UTF-16 come esempio. Ogni numero a 16 bit è un'unità di codice. Le unità di codice possono essere trasformate in punti di codice. Ad esempio, il simbolo della nota bemolle ♭ ha un punto di codice U+1D160 e vive sul secondo piano dello standard Unicode (Supplementary Ideographic Plane). Sarebbe codificato utilizzando la combinazione delle unità di codice a 16 bit U+D834 e U+DD60.
Per il BMP, i valori dei punti di codice e delle unità di codice sono identici. Ciò consente un collegamento per UTF-16 che consente di risparmiare molto spazio di archiviazione. Deve solo utilizzare un numero a 16 bit per rappresentare quei caratteri.
In che modo Java utilizza Unicode?
Giava è stato creato nel periodo in cui lo standard Unicode aveva valori definiti per un insieme di caratteri molto più piccolo. All'epoca si riteneva che 16 bit sarebbero stati più che sufficienti per codificare tutti i caratteri che sarebbero mai stati necessari. Con questo in mente, Java è stato progettato per utilizzare UTF-16. Il tipo di dati char è stato originariamente utilizzato per rappresentare un punto di codice Unicode a 16 bit.
A partire da Java SE v5.0, il char rappresenta un'unità di codice. Fa poca differenza per rappresentare i caratteri che si trovano nel piano multilingue di base perché il valore dell'unità di codice è lo stesso del punto di codice. Tuttavia, significa che per i personaggi sugli altri piani sono necessari due caratteri.
La cosa importante da ricordare è che un singolo tipo di dati char non può più rappresentare tutti i caratteri Unicode.