Privacy Policy Cookie Policy Terms and Conditions UTF-16 - Wikipedia

UTF-16

Da Wikipedia, l'enciclopedia libera.

UTF-16 (Unicode Transformation Format, 16 bit) è una codifica dei 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.

Indice

[modifica] Codifica UTF-16

In UTF-16 i primi 65536 caratteri di Unicode vengono rappresentati con il loro valore numerico, espresso in 16 bit. I caratteri il cui codice è superiore a 65535 (0xFFFF), quindi non rappresentabili 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.

[modifica] Varianti di UTF-16

I codici UTF-16 vengono memorizzati come parole di 16 bit, una parola per codice. 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 anziche 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 Mac OS X Cocoa e Core.

[modifica] Esempi

carattere Unicode nome codici UTF-16 carattere*
122 (esadecimale 0x7A) Z minuscola (alfabeto latino) 007A z
27700 (esadecimale 0x6C34) acqua (Cinese) 6C34
119070 (esadecimale 0x1D11E) chiave di Sol D834 DD1E 𝄞


"水, z, 𝄞" (acqua, z, chiave di Sol), codificati in UTF-16
tipo di codifica ordine dei byte sequenza dei byte in memoria
UTF-16LE little endian 34 6C, 7A 00, 34 D8 1E DD
UTF-16BE big endian 6C 34, 00 7A, D8 34 DD 1E
UTF-16 little endian, con BOM FF FE, 34 6C, 7A 00, 34 D8 1E DD
UTF-16 big endian, con BOM FE FF, 6C 34, 00 7A, D8 34 DD 1E

* Per visualizzare correttamente i caratteri sono necessari font e software compatibili Unicode.

[modifica] 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

[modifica] Voci correlate

[modifica] Collegamenti esterni

THIS WEB:

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - be - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - closed_zh_tw - co - cr - cs - csb - cu - cv - cy - da - de - diq - dv - dz - ee - el - eml - en - eo - es - et - eu - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gd - gl - glk - gn - got - gu - gv - ha - haw - he - hi - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mg - mh - mi - mk - ml - mn - mo - mr - ms - mt - mus - my - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - rm - rmy - rn - ro - roa_rup - roa_tara - ru - ru_sib - rw - sa - sc - scn - sco - sd - se - searchcom - sg - sh - si - simple - sk - sl - sm - sn - so - sq - sr - ss - st - su - sv - sw - ta - te - test - tet - tg - th - ti - tk - tl - tlh - tn - to - tokipona - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu

Static Wikipedia 2008 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2007:

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - be - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - closed_zh_tw - co - cr - cs - csb - cu - cv - cy - da - de - diq - dv - dz - ee - el - eml - en - eo - es - et - eu - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gd - gl - glk - gn - got - gu - gv - ha - haw - he - hi - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mg - mh - mi - mk - ml - mn - mo - mr - ms - mt - mus - my - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - rm - rmy - rn - ro - roa_rup - roa_tara - ru - ru_sib - rw - sa - sc - scn - sco - sd - se - searchcom - sg - sh - si - simple - sk - sl - sm - sn - so - sq - sr - ss - st - su - sv - sw - ta - te - test - tet - tg - th - ti - tk - tl - tlh - tn - to - tokipona - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu

Static Wikipedia 2006:

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - be - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - closed_zh_tw - co - cr - cs - csb - cu - cv - cy - da - de - diq - dv - dz - ee - el - eml - en - eo - es - et - eu - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gd - gl - glk - gn - got - gu - gv - ha - haw - he - hi - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mg - mh - mi - mk - ml - mn - mo - mr - ms - mt - mus - my - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - rm - rmy - rn - ro - roa_rup - roa_tara - ru - ru_sib - rw - sa - sc - scn - sco - sd - se - searchcom - sg - sh - si - simple - sk - sl - sm - sn - so - sq - sr - ss - st - su - sv - sw - ta - te - test - tet - tg - th - ti - tk - tl - tlh - tn - to - tokipona - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu