UTF-8
UTF-8 (8-bit Unicode Transformation Format) és un format de codificació de caràcters Unicode i ISO 10646 que utilisa símbols de llongitut variable. UTF-8 va ser creat per Robert C. Pike i Kenneth L. Thompson. Està definit com a estàndar per la <RFC 3629> de la Internet Engineering Task Force (IETF). Actualment és una de les tres possibilitats de codificació reconegudes per Unicode i llenguages web, o quatre en ISO 10646.
Les seues característiques principals són
- És capaç de representar qualsevol caràcter Unicode.
- Usa símbols de llongitut variable (d'1 a 4 bytes per caràcter Unicode).
- Inclou l'especificació US-ASCII de 7 bits, per lo que qualsevol mensage ASCII es representa sense canvis.
- Inclou sincronia. És possible determinar l'inici de cada símbol sense reiniciar la llectura des del principi de la comunicació.
- No superposició. Els conjunts de valors que pot prendre cada byte d'un caràcter multibyte, són disjuntos, per lo que no és possible confondre'ls entre sí.
Estes característiques ho fan atractiu en la codificació de correus electrònics i pàgines web.[1][2] l'IETF requerix que tots els protocols d'Internet indiquen quines codificació utilisen per als texts i que UTF-8 siga una de les codificació contemplades.[3] El Internet Mail Consortium (IMC) recomana que tots els programes de correu electrònic siguen capaços de crear i mostrar mensages codificats utilisant UTF-8.[4]
Història
[editar | editar còdic]UTF-8 va ser ideat per Kenneth L. Thompson baixe els criteris de disseny de Rob Pike el 2 de setembre de 1992. Abdós ho varen implementar i varen implantar en el seu sistema operatiu Pla 9 from Bell Labs. Posteriorment va anar oficialment presentat en la conferència USENIX en Sant Diego en giner de 1993. Va ser promogut a estàndart en el patrocini de X/Open Joint Internationalization Group (XOJIG) i durant el procés va rebre diferents noms com FSS/UTF i UTF-2.
Descripció
[editar | editar còdic]UTF-8 dividix els caràcters Unicode en varis grups, en funció del número de bytes necessaris per a codificar-los. El número de bytes depén exclusivament del còdic de caràcter assignat per Unicode i del número de bytes necessari per a representar-ho. La distribució de caràcters és la següent:
- Caràcters codificats en un byte: Els inclosos en US-ASCII, un total de 128 caràcters.
- Caràcters codificats en dos bytes: Un total de 1920 caràcters. Este grup inclou els caràcters romançades més signes diacrítics, i els alfabets grec, cirílico, copto, armeni, hebreu, àrap, siríaco i Thaana entre uns atres.
- Caràcters codificats en tres bytes: Caràcters del pla bàsic multilingüe de Unicode, que unit al grup anterior, inclou la pràctica totalitat de caràcters d'us comú, entre ells els caràcters del grup CJK: Chinenc, japonés i coreà.
- Caràcters codificats en quatre bytes: Caràcters del pla suplementari multilingüe. Símbols matemàtics i alfabets clàssics per a us principalment acadèmic: Llineal B silàbic i ideográfico, alfabet persa, fenicio... I el pla suplementari ideográfico: caràcters Han d'us poc comú.
Una propietat important de la codificació és que els bits més significatius del primer byte d'una seqüència multi-byte determinen la llongitut de la seqüència. Estos bits més significatius 110 per a seqüències de dos bytes; 1110 per a seqüències de tres bytes, etc. Estos bits ademés proporcionen l'informació de sincronia que permet identificar l'inici d'un símbol.
Codificació dels caràcters
[editar | editar còdic]La taula següent mostra la forma en que es codifiquen els caràcters. Els valors fixos al principi de cada byte garantisen el compliment del principi de no superposició, puix són distints en funció de la posició del byte en la cadena. S'inclou també la codificació UTF-16 per a vore la diferència en una codificació de número fix de bytes.
| Ranc de punts UNICODE |
Valor escalar | UTF-16 | UTF-8 | Notes |
Plantilla:Mona |
00000000 0xxxxxxx |
00000000 0xxxxxxx
|
0xxxxxxx
|
Ranc equivalent a US-ASCII. Símbols d'un únic byte a on el bit més significatiu és 0 |
000080-0007FF |
00000yyy yyxxxxxx |
00000yyy yyxxxxxx
|
110yyyyy 10xxxxxx
|
Símbols de dos bytes. El primer byte comença en 110, el segon byte comença en 10 |
000800-00FFFF |
zzzzyyyy yyxxxxxx |
zzzzyyyy yyxxxxxx
|
1110zzzz 10yyyyyy 10xxxxxx
|
Símbols de tres bytes. El primer byte comença en 1110, els bytes següents comencen en 10 |
010000-10FFFF |
000uuuuu zzzzyyyy yyxxxxxx
|
110110ww wwzzzzyy
|
11110uuu 10uuzzzz 10yyyyyy 10xxxxxx
|
Símbols de quatre bytes. El primer byte comença en 11110, els bytes següents comencen en 10 |
Seguint l'esquema anterior, seria possible incrementar el tamany màxim del símbol de 4 a 6 bytes. La definició de UTF-8 donada per Unicode no admet esta possibilitat que sí és admesa per ISO/IEC.[5]

Vejam, modo d'eixemple, cóm es codifica en UTF-8 el caràcter eñe (ñ), que en Unicode correspon en el punt de còdic Plantilla:Mona:
- El seu valor se situa en el ranc de Plantilla:Mona a Plantilla:Mona. Una consulta a la taula permet vore que deu ser codificat usant 2 bytes, en el format Plantilla:Mona.
- El valor hexadecimal Plantilla:Mona és equivalent al binario Plantilla:Mona (els primers 5 bits s'ignoren, ya que no són necessaris per a representar valors en el ranc especificat).
- Els 11 bits requerits se situen ordenats en la posició marcada per les equis: Plantilla:Mona.
- El resultat final són dos bytes en els valors hexadecimals Plantilla:Mona. Eixe és el còdic de la lletra eñe en UTF-8.
Per a recuperar el punt de còdic original es realisa el procés invers, descomponent les seqüències de bits en els seus components i prenent solament els bits necessaris.
Errors de codificació
[editar | editar còdic]Les normes de codificació establixen, per lo tant, llímits a les cadenes que es poden formar. Segons la norma, un intérpret de cadenes deu rebujar com inválidos, i no tractar d'interpretar, les caràcters mal formats. Un intérpret de cadenes UTF-8 pot cancelar el procés senyalant un error, ometre els caràcters mal formats o reemplaçar-los per un caràcter O+FFFD (REPLACEMENT CHARACTER).
Els següents són errors de codificació:
- Seqüències truncades, quan un caràcter d'inici multi-byte no està seguit per suficients bytes.
- Bytes de senyes (començats per 10) sense el corresponent inici de caràcter.
- Caràcters anómalament llarcs: Per eixemple, representar en 2 bytes un caràcter del ranc ASCII d'un byte. Els bytes
0xC0,0xC1no s'admeten. - Bytes d'inici de caràcter que especifiquen un llarc anómal de 5 o 6 bytes. Els bytes
0xF8a0xFDno s'admeten. - Valors fora del ranc Unicode: Els bytes
0xF5i0xF7no s'admeten. - Caràcters inválidos. Els caràcters en el ranc de parells subrogats de UTF-16, en còdic de
0xD800a0xDFFF, no són caràcters reals i no deuen codificar-se en UTF-8.
Byte order mark (BOM)
[editar | editar còdic]Quan se situa a l'inici d'una cadena UTF-8, un caràcter 0xFEFF, codificat en UTF-8 com 0xEF,0xBB,0xBF, es denomina Byte Order Mark (BOM) i identifica el contingut com una cadena de caràcters Unicode. Quan este caràcter es troba en un atre lloc de la cadena deu ser interpretat en el seu significat original Unicode (ZWNBSP). En ser UTF-8 una codificació en la que l'unitat d'informació és el byte, no té l'utilitat que sí té en UTF-16 i UTF-32 d'identificar l'orde de bytes en una paraula (endianness).
L'especificació no recomana o desaconsella l'utilisació de BOM, encara que sí desaconsella eliminar-ho si existix com a mida de seguritat, preveent errors en aplicacions de firma digital, etc. També advertix que deu ser eliminat en operacions de concatenació per a impedir que es mantinga en posicions no inicials.
Referències
[editar | editar còdic]- ↑ «Moving to Unicode 5.1». Official Google Blog. Consultat el 20 de maig de 2009.
- ↑ Usage of character encodings for websites
- ↑ H. Alvestrand. «<RFC 2277> - Política oficial de IETF sobre jocs de caràcters i idiomes». Internet Engineering Task Force. Consultat el 20 de maig de 2009.
- ↑ «Utilisació de Caràcters Internacionals en el Correu d'Internet». Internet Mail Consortium. Archivat des d'el original, el 26 d'octubre de 2007. Consultat el 20 de maig de 2008.
- ↑ The Unicode Consortium (octubre de 2006). «2.5 Encoding Forms», Julie D. Allen, Joe Becker (et al.) (ed.). Unicode 5.0 standard (en anglés), Addisson-Wesley. ISBN 0-321-48091-0.
Vore també
[editar | editar còdic]
Referències
[editar | editar còdic]
- Este artícul conté una traducció derivada de «UTF-8» de Wikipedia en castellà publicada baix la Llicència de documentació lliure de GNU i la Llicència Creative Commons Reconeiximent-CompartirIgual 4.0 Internacional.