Vés al contingut

UTF-16

De la Viquipèdia, l'enciclopèdia lliure

UTF-16 és una forma de codificació de caràcters UCS i Unicode utilitzant símbols de longitud variable. Es troba oficialment definit en l'annex C de la norma ISO/IEC 10646:2003. També està descrita en l'estàndard Unicode(versió 3.0 o superior).[1]És l'abreviara d'Unicode Transformation Formatde 16-plans o més exactament, «UCS Transformation Format for 16 Plans of Group 00» segons la norma internacionalISO/IEC 10646.[2]

Te les característiques principals següents:

  • És capaç de representar qualsevol caràcter Unicode.
  • Utilitza símbols de longitud variable: 1 o 2paraulesde 16 bits per caràcter Unicode (2 o 4 bytes). La unitat d'informació és laparaulade 16 bits.
  • Està optimitzat per a representar caràcters alpla bàsic multilingüeo BMP, caràcters en el rang U+0000 a O+FFFF. El BMP conté la gran majoria de caràcters i sistemes d'escriptura en ús en l'actualitat. Quan es limita al pla bàsic multilingüe, UTF-16 pot ser considerat una forma de codificació amb símbols de mida fixa (16 bits).
  • No superposició: Els símbols d'una paraula (16 bits) utilitzen un subconjunt de valors que no es pot utilitzar en símbols de 2 paraules (32 bits).

Història

[modifica]

UTF-16 és l'evolució deUCS-2,present en l'estàndard Unicode fins a la versió 1.1. En UCS-2 cada punt de codi es representa pel seu valor, el que limitava el seu ús apla bàsic multilingüe.En la versió 2.0 de l'Estàndard Unicode, la decisió d'ampliar l'espai de codis per sobre del codi FFFF va suposar la necessitat d'incloure un nou format que donés suport als nous plans, 15 i 16, d'ús privat. No obstant això, l'estàndard no va definir encara cap punt de codi fent ús d'aquest mecanisme fins a la versió 3.1.[3][4]

Descripció

[modifica]

En UTF-16 cada punt de codi entre 0 i FFFF es codifica, sense canvis, utilitzant 16 bits. Aquest rang es correspon amb elpla bàsic multilingüed'Unicode, de manera que la gran majoria dels caràcters d'ús comú es codifiquen amb 16 bits.

Els caràcters dels plans addicionals, es codifiquen mitjançant 32 bits. La codificació no es fa de forma directa, és a dir, el codi final no és el valor del punt de codi. UTF-16 defineix un format de transformació per a aquests casos denominatparells subrogats.

A l'hora de valorar l'espai d'emmagatzematge requerit per un text utilitzant aquesta codificació, pot assumir que els caràcters no inclosos en el pla bàsic són molt poc freqüents i per tant cada caràcter utilitzarà 16 bits. Aquesta afirmació és vàlida també per al cas de les escripturesCJK(xinès, japonès i coreà).

Parells subrogats

[modifica]
Exemple:Codificació del caràcterUnicodeO+1D11E,Clau de sol.El caràcter està fora del pla bàsic (BMP) i per tant requereix l'ús de parells subrogats.

Unicode i ISO/IEC han limitat l'espai assignable als codis fins a 10FFFF, per la qual cosa es requereix un màxim de 21 bits per a la representació de qualsevol caràcter. Si s'utilitzen dues paraules per representar codis per sobre de FFFF, es té un excés de bits. Aprofitant aquesta circumstància, es va dissenyar el sistema de parells subrogats per representar caràcters fora del pla bàsic.

Es defineix un parell subrogat com dues paraules de 16 bits on:

  • La primera paraula de 16 bits s'anomena subrogat alt o subrogat inicial en terminologia Unicode oelements RC de la zona mitjana-altaen terminologia ISO/IEC. Prenen valors en el rang [D800, DBFF].
  • La segona paraula de 16 bits s'anomena subrogat baix o subrogat final en terminologia Unicode oelements RC de la zona mitjana-baixaen terminologia ISO/IEC. Prenen valors en el rang [DC00, DFFF].
  • Es compleix el principi de no superposició, els conjunts valors de subrogats alts, baixos i codis no subrogats són completament disjunts.

Per poder complir el principi de no superposició, el conjunt de valors utilitzats com parells subrogats ha estat estandarditzat i reservat, i per això no pot ser utilitzat per a altres fins.

El sistema de parells subrogats es va afegir en la versió 2.0 d'Unicode, ISO 10646: xxxx, i pel seu disseny minimitza els conflictes que es poguessin presentar amb implementacions anteriors que no facin ús.

Errors de codificació

[modifica]

Les normes de codificació estableixen, per tant, límits a les cadenes que es poden formar. Segons la norma, un intèrpret de cadenes ha de rebutjar com invàlides, i no tractar d'interpretar, les cadenes mal formades.

  • Codi subrogat inicial sempre ha d'anar seguit d'un codi subrogat final.
  • Codi subrogat final sempre ha d'anar precedit per un codi subrogat inicial.
  • No s'admet la codificació de caràcters invàlids. Els codis FFFE, FFFF i els valors de FDD0 a FDEF, no són caràcters reals i no han de codificar en UTF-16. Tampoc s'admeten els valors reservats fora del pla bàsic.

Esquemes de codificació i BOM

[modifica]

A partir del format de transformació UTF-16 es defineixen 3 esquemes de codificació. Tot i que comparteixen noms, no s'ha de confondre esquemes i formes de codificació. Elsesquemes de codificaciótracten de la forma en què se serialitza, escindits la informació codificada.[5]La seguretat en els intercanvis d'informació entre sistemes heterogenis requereix la implementació de sistemes que permetin determinar l'ordre correcte dels bits i bytes i garantir que la reconstrucció de la informació és correcta. Una diferència fonamental entreprocessadorsés l'ordre de disposició dels bytes en paraules de 16 i 32 bits, el que s'anomenaendianness.Els esquemes de codificació han de garantir que els extrems d'una comunicació saben com interpretar la informació rebuda.

Esquema de codificació Ordre dels bytes AdmetBOM
UTF-16 Big-endianoLittle-endian
UTF-16BE Big-endian No
UTF-16LE Little-endian No

Unicode defineix una marca especial,Byte order markoBOM,a l'inici d'un fitxer o una comunicació per fer explícita l'ordenació de bytes. Aquesta marca és el caràcter amb punt de codi U+FEFF. Quan es troba en una posició inicial, pot ser interpretat com a BOM depenent del context de la comunicació. En qualsevol altra posició manté la seva semàntica original com caràcterZERO WIDTH NON-BREAKING SPACE.Quan un protocol superior especifica l'ordre de bytes, la marca no és necessària i pot ometre donant lloc als esquemes de la llista anterior amb sufixBEoLI.En el cas de l'esquema UTF-16, que admet BOM, si aquest no s'especifica s'assumeix que l'ordenació de bytes ésbig-endian.

Vegeu també

[modifica]

Referències

[modifica]
  1. Es pot trobar alRFC2781de laIETF
  2. «ISO/IEC 10646» (en anglès). International Organization for Standardization. [Consulta: 2 febrer 2021].
  3. Aliprand,Joan;et alii.«Appendix D. Changes from Unicode Version 2.0». A: The Unicode Consortium.The Unicode Standard. Version 3.0 standard(en anglès). Addisson-Wesley, gener de 2000.ISBN 0-201-61633-5[Consulta: 13 novembre 2010].Arxivat2008-11-17 aWayback Machine.
  4. The Unicode Consortium. «Appendix D. Changes from previous versions». A: Julie D. Allen, Joe Becker (et al.).Unicode 5.0 standard(en anglès). Addisson-Wesley, octubre de 2006.ISBN 0-321-48091-0.
  5. The Unicode Consortium. «2.5 Encoding Forms». A: Julie D. Allen, Joe Becker (et al.).Unicode 5.0 standard(en anglès). Addisson-Wesley, octubre de 2006.ISBN 0-321-48091-0.