ASCII i Unicode: què són i per a què serveixen

Un ordinador només entén números, així que cada lletra que veus a la pantalla és un codi. ASCII va ser la primera taula de codis que es va convertir en estàndard i Unicode és la que fem servir avui per escriure en qualsevol idioma. Aquí veuràs com funcionen, quins codis convé conèixer, per què de vegades apareixen símbols estranys en lloc d'accents i com consultar-ho tot a la taula.

Actualitzat:

Què és una codificació de caràcters

Una codificació és un acord: «el número 65 significa la lletra A». Quan escrius un text, el programa desa aquests números; quan una altra persona l'obre, el seu programa els torna a traduir a lletres fent servir el mateix acord. Si tots dos no fan servir la mateixa taula, el text surt malament.

Cal separar dues idees. Una és el joc de caràcters, la llista de quins números corresponen a quins símbols. L'altra és com aquests números es desen en bytes. En ASCII les dues coincideixen de manera trivial; en Unicode no, i aquí entra UTF-8.

ASCII: 128 caràcters de 7 bits

ASCII (sigles d'American Standard Code for Information Interchange) es va estandarditzar a la dècada de 1960. Fa servir 7 bits, o sigui 2 elevat a 7 = 128 codis, del 0 al 127. D'ells, 33 són caràcters de control (del 0 al 31 i el 127) i 95 són imprimibles (del 32 al 126, inclòs l'espai).

No inclou lletres amb accent, ni la ñ, ni el símbol de l'euro: es va dissenyar per a l'anglès. Això explica per què després van fer falta altres taules.

Els codis que més trobaràs. L'espai (32) compta com a imprimible encara que no es vegi.
Caràcter de controlDecimalHexadecimalBinari (7 bits)Per a què serveix
Nul (NUL)0000000000Marca el final d'una cadena en diversos llenguatges
Tabulació horitzontal (TAB)9090001001Salta al tabulador següent
Salt de línia (LF)100A0001010Baixa a la línia següent
Retorn de carro (CR)130D0001101Torna al començament de la línia
Escapada (ESC)271B0011011Inicia seqüències de control
Espai32200100000Primer caràcter imprimible
Suprimeix (DEL)1277F1111111Esborra el caràcter

Relacions que convé recordar

La taula no està ordenada a l'atzar. Amb unes quantes regularitats pots llegir codis de memòria.

Final de línia: LF, CR i CRLF

Un salt de línia sembla una cosa simple, però s'escriu diferent segons el sistema. Unix, Linux i macOS fan servir un sol caràcter, LF (10). Windows en fa servir dos seguits, CR i LF (13 i 10), coneguts com a CRLF. Els vells teletips necessitaven dues ordres diferents: tornar el carro al començament i avançar el paper una línia.

Aquesta diferència és la causa d'arxius que es veuen tots en una línia en un editor bàsic, o amb un símbol estrany al final de cada renglera. Si busques quin codi té cada un, escriu LF o CR al cercador de la taula ASCII.

L'«ASCII estès» no és un estàndard

Com que un byte té 8 bits i ASCII només en fa servir 7, sobraven 128 codis lliures (del 128 al 255) i cada fabricant i regió els va omplir a la seva manera. Això es coneix com a «ASCII estès», però no existeix una única taula: n'hi ha moltes, anomenades pàgines de codis. Dues de les més conegudes són Latin-1 (ISO-8859-1), on la é és el codi 233, i Windows-1252, semblant però amb diferències en els codis 128 a 159 (allà hi ha, per exemple, l'euro).

El problema és que el codi 233 significa «é» en una taula i una altra cosa en una altra. Un text escrit amb una taula i llegit amb una altra mostrava brossa. Unicode va néixer per acabar amb aquest desordre.

Unicode i UTF-8

Unicode assigna un número únic, anomenat punt de codi, a cada caràcter de gairebé tots els sistemes d'escriptura del món, més símbols i emojis. Avui té més de 150.000 caràcters. S'escriu amb el prefix U+ i en hexadecimal: la «A» és U+0041, la «ñ» és U+00F1, l'euro és U+20AC i l'emoji de cara somrient és U+1F600. Els primers 128 punts de codi són exactament els d'ASCII.

UTF-8 és la forma més utilitzada de desar aquests números en bytes, i en fa servir entre 1 i 4 segons el caràcter. Els 128 d'ASCII ocupen un sol byte idèntic al de sempre, així que un text ASCII és també un text UTF-8 vàlid. La resta ocupa més bytes.

Com més lluny d'ASCII, més bytes ocupa el caràcter.
CaràcterPunt de codiBytes en UTF-8Bytes (hexadecimal)
AU+0041141
éU+00E92C3 A9
ñU+00F12C3 B1
€U+20AC3E2 82 AC
😀U+1F6004F0 9F 98 80

Per què apareix «Ã±» en lloc de «ñ»

És l'error més comú i té una explicació exacta. La ñ en UTF-8 són dos bytes: C3 i B1. Si un programa creu que el text està en Latin-1, llegeix cada byte com un caràcter: el C3 és «Ã» i el B1 és «±». Resultat: «Ã±». Passa el mateix amb «é», que es veu com «Ã©», i amb «canción», que apareix com «canción».

La solució gairebé sempre és indicar al programa que obri l'arxiu com a UTF-8 (en un editor de text o a la configuració de la importació d'un full de càlcul). Quan passa al revés, text en Latin-1 llegit com a UTF-8, solen aparèixer rombes amb un signe d'interrogació, perquè aquests bytes solts no formen seqüències UTF-8 vàlides.

Com fer servir la taula ASCII i el convertidor

L'eina «Taula ASCII» mostra els 128 caràcters amb el seu codi en decimal, hexadecimal, octal i binari, i el nom dels de control.

  1. Escriu al cercador un caràcter, un codi o el nom d'un de control (per exemple A, 65, 41 o LF) per trobar-ne la fila.
  2. Fes servir els botons de filtre (Control, Xifres, Majúscules, Minúscules, Signes) per veure només un grup.
  3. Per convertir, escriu un text a «Text» i tria el format (decimal, hexadecimal, octal o binari): a sota apareixen els codis. «Hola» dona 72 111 108 97 en decimal i 48 6F 6C 61 en hexadecimal.
  4. També ho pots fer al revés: enganxa codis separats per espais o comes a «Codis» i es forma el text. En hexadecimal s'accepten prefixos com 0x41.

Si el text té caràcters que no són ASCII, com la ñ, l'eina ho avisa i mostra el seu codi Unicode. Per veure els bytes reals en UTF-8 fes servir «Text a binari»: la ñ dona 11000011 10110001, dos bytes de 8 bits. Els límits: la taula mostra només ASCII estàndard, no l'estès, i tot es calcula al teu navegador sense enviar el text a cap servidor.

Preguntes freqüents

Quants caràcters té l'ASCII?

128, amb codis del 0 al 127 i 7 bits cada un. D'ells, 33 són de control i 95 són imprimibles, comptant l'espai.

Quin és el codi ASCII de la lletra A i de la a?

La «A» és 65 (41 en hexadecimal, 01000001 en binari) i la «a» és 97 (61 en hexadecimal, 01100001 en binari). Sempre difereixen en 32.

Quina és la diferència entre ASCII i Unicode?

ASCII té 128 caràcters pensats per a l'anglès. Unicode en té més de 150.000, de gairebé tots els idiomes i emojis, i els seus primers 128 són els mateixos que els d'ASCII.

Què és UTF-8?

És la forma més utilitzada de desar text Unicode en bytes. Fa servir d'1 a 4 bytes per caràcter: els d'ASCII en ocupen un, una ñ en ocupa dos i un emoji quatre.

Per què el meu text mostra «Ã±» o «Ã©»?

Perquè un text desat en UTF-8 s'està llegint com a Latin-1. Obre l'arxiu indicant la codificació UTF-8 i es soluciona.