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ó.[a]
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, el codi BCD (6-bit), la norma ASCII o la norma UTF-8, entre altres.
Per estar íntimament lligat a l'octet (i per tant als nombres enters que van del 0 al 127), el problema que presenta és que no pot codificar més de 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'alfabet anglès, a més de xifres, puntuació, i alguns "caràcters de control" (per exemple, un que indica a una impressora que passi al full següent), però l'ASCII no inclou ni els caràcters accentuats ni el punt volat que es fa servir en català, ni tants altres símbols (signes matemàtics, lletres gregues, lletres llatines amb altres diacrítics, etc.) que són necessaris en molts contextos.
A causa de les limitacions de l'ASCII es van definir diversos codis de caràcters de 8 bits, entre ells l'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.
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 que conté, els quals abasten tots els alfabets europeus, ideogrames xinesos, japonesos, coreans, moltes altres formes d'escriptura, i més d'un miler de símbols especials.
És una norma de transmissió utilitzada juntament amb la norma de codificació Unicode.[1] 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 enter del 0 al 127 en un octet "a l'antiga" però amb el vuitè dígit sempre a zero, ja que actualment el bit de paritat ja no es fa servir per a detecció d'errors
Atès que la taula d'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 de set dígits per a la seva representació binària). En tots aquests casos, UTF-8 envia al 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 complet no es podrà conèixer fins que no es llegeixi el següent octet (o fins i tot el tercer octet que segueix, si la codificació requerís tres octets). En el pitjor dels casos, potser arribi a ser necessari llegir sis octets consecutius per determinar un símbol codificat amb un número prou alt.
Sovint els sistemes operatius, en especial Windows, utilitzen mapes de caràcters o pàgines de codi on barregen diverses normes 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.
Les normes de transmissió tenen com a objectiu definir la manera com els caràcters codificats (utilitzant les normes de codificació) es transmeten al canal de comunicacions (per exemple Internet)
Actualment, a Internet els missatges es transmeten en paquets que sempre consten d'un nombre enter d'octets, i la detecció d'errors 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 d'octets (que han de ser transmesos en qualitat de dades).
Però, finalment, per al correu electrònic 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.
↑Un exemple senzill de codificació per a la paraula " hello " pot veure's aquí
↑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í.