Codificació de caràcters

De Viquipèdia
Dreceres ràpides: navegació, cerca

La codificació de caràcters és el mètode que permet convertir un caràcter d'un llenguatge natural (alfabet o sil·labari) en un símbol d'un altre sistema de representació, com un nombre o una seqüència de polsos elèctrics en un sistema electrònic, aplicant normes o regles de codificació. Un exemple senzill de codificació per a la paraula " hello " pot veure's aquí

Taula de continguts

Normes de codificació [modifica]

Defineixen la forma en què es codifica un caràcter donat en un símbol en un altre sistema de representació. Exemples d'això són el codi Morse, la norma ASCII o la UTF-8, entre altres.

ASCII [modifica]

Per estar íntimament lligat al octet (i per tant als sencers que van del 0 al 127, el problema que presenta és que no pot codificar més que 128 símbols diferents (128 és el nombre total de diferents configuracions que es poden aconseguir amb 7 dígits binaris o digitals (0.000.000 , 0.000.001 ,..., 1.111.111 ), usant el vuitè dígit de cada octet (bit o dígit de paritat) per detectar algun error de transmissió). Una quota de 128 és suficient per incloure majúscules i minúscules de l'abecedari anglès, a més de xifres, puntuació, i alguns "caràcters de control" (per exemple, un que instrueix a una impressora que passi al full següent), però el ASCII no inclou ni els caràcters accentuats ni el començament d'interrogació que s'usa en català, ni tants altres símbols (matemàtics, lletres gregues ,...) que són necessaris en molts contextos.

ASCII ampliada [modifica]

A causa de les limitacions del ASCII es van definir diversos codis de caràcters de 8 bits, entre ells el ASCII estès. Tanmateix, el problema d'aquests codis de 8 bits és que cada un d'ells es defineix per un conjunt de llengües amb escriptures semblants i per tant no donen una solució unificada a la codificació de totes les llengües del món. És a dir, no són suficients 8 bits per codificar tots els alfabets i escriptures del món.

Unicode [modifica]

Com a solució a aquests problemes, des de 1991 s'ha acordat internacionalment utilitzar la norma Unicode, que és una gran taula, que actualment assigna un codi a cada un dels més de cinquanta mil símbols, els quals comprenen tots els alfabets europeus, ideogrames xinesos, japonesos, coreans, moltes altres formes d'escriptura, i més d'un miler de símbols especials.

UTF-8 [modifica]

És una norma de transmissió utilitzada juntament amb la norma de codificació Unicode. Utilitzades en conjunt, funcionen de la següent manera:

  • Unicode assigna els enters del 0 al 127 (un total de 128) a exactament els mateixos caràcters que ASCII
  • UTF-8 empaqueta qualsevol sencer del 0 al 127 en un octet "a l'antiga" però amb el vuitè dígit sempre en zero, ja que actualment el bit de paritat no s'utilitza més per a detecció d'errors
  • A més, com la taula de Unicode és tan gran, la majoria dels seus símbols estan assignats a enters majors que 127 (codis que, en conseqüència, necessiten més que 7 dígits per a la seva representació binària). En tots aquests casos, UTF-8 envia el començament de la representació binària del codi en qüestió en un primer octet amb dígit de paritat = 1
  • El receptor d'aquest missatge, interpreta aquest dígit en 1 com a senyal que el que està sent transmès és un codi que no cap en 7 dígits binaris, i per tant determina que el símbol no ho va a conèixer mentre no llegiu el següent octet , i potser el que segueix. En el pitjor dels casos, potser es faci necessari llegir seis octets consecutius per determinar un codi alt.

Mapes de caràcters [modifica]

Article principal: Mapa de caràcters

Sovint els sistemes operatius, en especial Windows, utilitzen mapes de caràcters o pàgines de codi on barregen o Inclòs diverses normes . html aquí es troba a la figura 1 un exemple de com estan distribuïts els caràcters i les normes de codificació de caràcters per a MS DOS.

Normes de Transmissió [modifica]

Les normes de transmissió tenen com a objectiu definir la manera com els caràcters codificats (utilitzant els normes de codificació ) són transmesos al canal de comunicacions (per exemple Internet)

Actualment, a Internet els missatges es transmeten en paquets que sempre consten d'un nombre sencer de bytes, i la detecció d'error ja no es fa amb el vuitè dígit de cada octet, sinó amb octets especials que automàticament s'agreguen a cada paquet. Les normes de transmissió es limiten a especificar una correspondència, reversible, entre codis (que representen caràcters), i seqüències de bytes (que han de ser transmesos en qualitat de dades).

Taules tipogràfiques [modifica]

Però, finalment, per carta electrònica en xinès simplificat (per exemple) cal un detall important:

La taula que el Consorci Unicode publica per a ser llegida per humans, conté una representació gràfica o descripció, de cada caràcter inclòs fins aquell moment, però, els sistemes de visualització de documents, per poder funcionar, requereixen taules de tipografia, que associen un glif (dibuix) a cada caràcter que abasten, i passa que hi ha moltíssimes taules de tipografia, amb noms com Arial o Times, que dibuixen una mateixa lletra a base de matrius diferents i en diferents estils ("A" o "A"), però la gran majoria de les famílies de tipus d'impremta contenen només un petit subconjunt de tots els caràcters Unicode. Per aquest motiu, per llegir pàgines amb caràcters asiàtics, per exemple, no n'hi ha prou que el visualitzador usat "accepti" la codificació Unicode, sinó que, a més, l'ordinador ha de tenir instal·lada una taula tipogràfica prou extensa.

Normes comunes de codificació de caràcters [modifica]

Codificació de caràcters de l'idioma espanyol [modifica]

Minúscules
caràcter ISO-8859-1 UTF-8 UTF-16
A 0x61 0x61 0x00 0x61
B 0x62 0x62 0x00 0x62
C 0x63 0x63 0x00 0x63
D 0x64 0x64 0x00 0x64
I 0x65 0x65 0x00 0x65
F 0x66 0x66 0x00 0x66
G 0x67 0x67 0x00 0x67
H 0x68 0x68 0x00 0x68
I 0x69 0x69 0x00 0x69
J 0x6a 0x6a 0x00 0x6a
K 0x6b 0x6b 0x00 0x6b
L 0x6c 0x6c 0x00 0x6c
M 0x6d 0x6d 0x00 0x6d
N 0x6e 0x6e 0x00 0x6e
O 0x6f 0x6f 0x00 0x6f
P 0x70 0x70 0x00 0x70
Q 0x71 0x71 0x00 0x71
R 0x72 0x72 0x00 0x72
S 0x73 0x73 0x00 0x73
T 0x74 0x74 0x00 0x74
O 0x75 0x75 0x00 0x75
V 0x76 0x76 0x00 0x76
W 0x77 0x77 0x00 0x77
X 0x78 0x78 0x00 0x78
I 0x79 0x79 0x00 0x79
Z 0x7a 0x7a 0x00 0x7a
Majúscules
caràcter ISO-8859-1 UTF-8 UTF-16
A 0x41 0x41 0x00 0x41
B 0x42 0x42 0x00 0x42
C 0x43 0x43 0x00 0x43
D 0x44 0x44 0x00 0x44
E 0x45 0x45 0x00 0x45
F 0x46 0x46 0x00 0x46
G 0x47 0x47 0x00 0x47
H 0x48 0x48 0x00 0x48
I 0x49 0x49 0x00 0x49
J 0x4a 0x4a 0x00 0x4a
K 0x4b 0x4b 0x00 0x4b
L 0x4c 0x4c 0x00 0x4c
M 0x4d 0x4d 0x00 0x4d
N 0x4e 0x4e 0x00 0x4e
O 0x4f 0x4f 0x00 0x4f
P 0x50 0x50 0x00 0x50
Q 0x51 0x51 0x00 0x51
R 0x52 0x52 0x00 0x52
S 0x53 0x53 0x00 0x53
T 0x54 0x54 0x00 0x54
U 0x55 0x55 0x00 0x55
V 0x56 0x56 0x00 0x56
W 0x57 0x57 0x00 0x57
X 0x58 0x58 0x00 0x58
I 0x59 0x59 0x00 0x59
Z 0x5a 0x5a 0x00 0x5a
Accents i accents
caràcter ISO-8859-1 UTF-8 UTF-16
À 0xe1 0xc3 0xa1 0x00 0xe1
À 0xc1 0xc3 0x81 0x00 0xc1
É 0xe9 0xc3 0xa9 0x00 0xe9
É 0xc9 0xc3 0x89 0x00 0xc9
Í 0xed 0xc3 0xad 0x00 0xed
Í 0xcd 0xc3 0x8d 0x00 0xcd
O 0xf3 0xc3 0xb3 0x00 0xf3
O 0xd3 0xc3 0x93 0x00 0xd3
Ú 0xfa 0xc3 0xba 0x00 0xfa
Ú 0xda 0xc3 0x9a 0x00 0xda
Ü 0xfc 0xc3 0xbc 0x00 0xfc
Ü 0xdc 0xc3 0x9c 0x00 0xdc
Ñ 0xf1 0xc3 0xb1 0x00 0xf1
Ñ 0xd1 0xc3 0x91 0x00 0xd1
Símbols
caràcter ISO-8859-1 UTF-8 UTF-16
¿ 0xbf 0xc2 0xbf 0x00 0xbf
? 0x3f 0x3f 0x00 0x3f
¡ 0xa1 0xc2 0xa1 0x00 0xa1
! 0x21 0x21 0x00 0x21

En aquesta taula els codis donats estan donat sota el sistema numèric hexadecimal, per veure la representació dels codis ASCII en sistemes numèrics com ara: decimal, binari i conèixer el codi ALT de teclat per als mateixos i fins i tot el nom correcte per a cada caràcter, pot utilitzar l'applet que apareix aquí.