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.
Questa pagina contiene caratteri particolari, che potrebbero non funzionare sul tuo sistema ed essere sostituiti da segnaposto (es. quadratini).
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 codice65
(0x41
), viene rappresentato come0x0041
- il carattere
0x10000
diventa la coppia0xD800, 0xDC00
- il carattere
0x10FFFD
, corrispondente al limite superiore di Unicode, viene rappresentato con la sequenza0xDBFF, 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
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
Wikimedia Commons contiene immagini o altri file sull'UTF-16
Collegamenti esterni
- Unicode Technical Note #12: UTF-16 for Processing, su unicode.org.
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads