Timeline
Chat
Prospettiva

UTF-16

codifica di caratteri Unicode in sequenze di numeri a 16 bit Da Wikipedia, l'enciclopedia libera

Remove ads

UTF-16 (Unicode Transformation Format, 16 bit) è una codifica di caratteri Unicode in sequenze di numeri a 16-bit. UTF-16 è definito ufficialmente nell'allegato Q dello standard ISO/IEC 10646, e viene descritto nella versione 3.0 e successive de "the Unicode standard", oltre che nel documento RFC 2781 della IETF.UTF-16 utilizza principalmente la Basic Multilingual Plane (BMP) per rappresentare la maggior parte dei caratteri comuni tramite una singola unità di codice a 16 bit. Per i caratteri che non rientrano nella BMP—come molte emoji moderne o caratteri storici—UTF-16 impiega invece una coppia surrogata, ossia due unità di codice consecutive che, combinate, permettono di rappresentare oltre un milione di punti di codice aggiuntivi. Questa codifica è ampiamente utilizzata in diversi sistemi operativi e ambienti di programmazione, come Windows e Java, in cui il formato a 16 bit per carattere è parte dell’architettura interna delle stringhe.

Questa pagina contiene caratteri particolari, che potrebbero non funzionare sul tuo sistema ed essere sostituiti da segnaposto (es. quadratini). Vedi Aiuto:Unicode.
Remove ads

Codifica UTF-16

In UTF-16 i caratteri di Unicode con valore fino a 65535 (0xFFFF) vengono rappresentati con il loro valore numerico, espresso in 16 bit. I caratteri al di fuori del Basic Multilingual Plane, il cui codice è superiore a 65535 (0xFFFF) e non rappresentabile direttamente con 16 bit, vengono rappresentati con una coppia surrogata, ovvero una coppia di codici nell'intervallo da 0xD800 a 0xDFFF. Per esempio:

  • il carattere A, corrispondente al codice 65 (0x41), viene rappresentato come 0x0041
  • il carattere 0x10000 diventa la coppia 0xD800, 0xDC00
  • il carattere 0x10FFFD, corrispondente al limite superiore di Unicode, viene rappresentato con la sequenza 0xDBFF, 0xDFFD.

Unicode non assegna a nessun carattere un valore compreso tra 0xD800 e 0xDFFF, evitando in questo modo che i singoli elementi di una coppia surrogata possano essere confusi con un carattere Unicode valido.

Remove ads

Varianti di UTF-16

Riepilogo
Prospettiva

Ciascun code point UTF-16 viene memorizzato in un intero a 16 bit (uint16). Dato che l'ordine dei byte in una parola varia a seconda dell'architettura del calcolatore, UTF-16 prevede tre schemi di codifica, UTF-16, UTF-16LE (Little Endian) e UTF-16BE (Big Endian).

La codifica UTF-16 impone che l'ordine dei byte venga dichiarato esplicitamente aggiungendo un Byte Order Mark come prefisso di ogni testo codificato. Il BOM è la forma codificata del carattere Zero width, non breaking space, corrispondente all'esadecimale 0xFEFF, rappresentato come 0xFE,0xFF sui sistemi big endian e 0xFF, 0xFE sui sistemi little endian.

Le codifiche UTF-16BE e UTF-16LE sono identiche alla codifica UTF-16, con l'eccezione che l'ordine dei byte è implicito, big endian per UTF-16BE, e little endian per UTF-16LE. Il carattere 0xFEFF all'inizio di un testo rappresentato con una di queste due codifiche viene considerato parte del testo anziché come BOM.

La IANA ha approvato i nomi UTF-16, UTF-16BE e UTF-16LE, indifferentemente maiuscoli o minuscoli, per l'uso su Internet. I nomi UTF_16 o UTF16, comunemente usati, potrebbero essere riconosciuti da specifici linguaggi di programmazione o applicazioni, ma non sono ufficialmente validi.

UTF-16 è la rappresentazione nativa del testo per le versioni di Windows basate su NT, per il linguaggio di programmazione Java e per gli ambienti .NET e macOS Cocoa e Core.

Remove ads

Esempi

Ulteriori informazioni Carattere Unicode, Nome ...
Ulteriori informazioni Tipo di codifica, Ordine dei byte ...

Procedura di codifica UTF-16

Supponiamo di voler codificare il carattere U+64321 (esadecimale 0x64321). Essendo superiore a 0xFFFF deve essere rappresentato con una coppia surrogata, in questo modo:

v  = 0x64321
v′ = v - 0x10000
   = 0x54321
   = 0101 0100 0011 0010 0001
vh = 0101010000 // 10 bit alti di v′
vl = 1100100001 // 10 bit bassi di v′
w1 = 0xD800 //  w1 e w2 vengono inizializzati con la prima coppia surrogata
w2 = 0xDC00
w1 = w1 | vh
   = 1101 1000 0000 0000 | 01 0101 0000
   = 1101 1001 0101 0000
   = 0xD950
w2 = w2 | vl
   = 1101 1100 0000 0000 | 11 0010 0001
   = 1101 1111 0010 0001
   = 0xDF21

La rappresentazione del carattere U+64321 è quindi la seguente coppia di parole di 16 bit: 0xD950 0xDF21.

Remove ads

Voci correlate

Altri progetti

Collegamenti esterni

  Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica
Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads