ASCII (de l'anglèsAmerican Standard Code for Information Interchange) és un codi estàndard estatunidenc per a l'intercanvi d'informació. L'ASCII és un joc de caràcters que assigna valors numèrics (del 0 al 127, 7 bits de longitud) a les lletres, xifres i signes de puntuació. Existeixen codis ASCII extensos de 256 caràcters (del 0 al 255, un byte), que permeten representar caràcters no anglesos com poden ser accents o la «ç». Els caràcters de la part superior (127 a 255), varien d'un estàndard tècnic a un altre, encara que el més utilitzat és el Latin-1 o ISO-8859-1.
El codi ASCII utilitza 7 bits per representar els caràcters, encara que inicialment emprava un bit addicional (bit de paritat) que s'usava per detectar errors en la transmissió. Sovint s'anomena incorrectament ASCII a altres codis de caràcters de 8 bits com l'estàndard ISO-8859-1, que és una extensió que utilitza 8 bits per proporcionar caràcters addicionals usats en idiomes diferents a l'anglès, com el català.
ASCII va ser publicat com a estàndard per primera vegada en 1967 i va ser actualitzat per última vegada en 1986. En l'actualitat defineix codis per 33 caràcters no imprimibles, dels quals la majoria són caràcters de control obsolets que tenen efecte sobre com es processa el text, més altres 95 caràcters imprimibles que els segueixen en la numeració (començant pel caràcter espai).
Gairebé tots els sistemes informàtics actuals utilitzen el codi ASCII o una extensió compatible per representar textos i per al control de dispositius que treballen amb text.
Vista general
Les computadores solament entenen nombres. El codi ASCII és una representació numèrica d'un caràcter com 'a' o '@'.[1]
Com altres codis de format de representació de caràcters, l'ASCII és un mètode per a una correspondència entre cadenes de bits i una sèrie de símbols (alfanumèrics i uns altres), permetent d'aquesta forma la comunicació entre dispositius digitals així com el seu processat i emmagatzematge. El codi de caràcters ASCII o una extensió compatible s'usa gairebé en tots els ordinadors, especialment amb ordinadors personals i estacions de treball. El nom més apropiat per a aquest codi de caràcters és "US-ASCII".[2]
@ A B C D E F G H I J K L M N O P Q R S T O V W X Y Z [ \ ] ^ _
` a b c d e f g h i j k l m n o p q r s t o v w x y z { | }
ASCII és, en sentit estricte, un codi de set bits, la qual cosa significa que usa cadenes de bits representables amb set dígits binaris (que van de 0 a 127 en base decimal) per representar informació de caràcters. En el moment en el qual es va introduir el codi ASCII molts ordinadors treballaven amb grups de vuit bits (bytes o octets), com la unitat mínima d'informació; on el vuitè bit s'usava habitualment com bit de paritat amb funcions de control d'errors en línies de comunicació o altres funcions específiques del dispositiu. Les màquines que no usaven la comprovació de paritat assignaven al vuitè bit el valor zero en la majoria dels casos, encara que altres sistemes com les computadores Prime, que executaven PRIMOS posaven el vuitè bit del codi ASCII a 1.
El codi ASCII defineix una relació entre caràcters específics i seqüències de bits; a més de reservar uns quants codis de control per al processador de textos, i no defineix cap mecanisme per descriure l'estructura o l'aparença del text en un document; aquests assumptes estan especificats per altres llenguatges com els llenguatges d'etiquetes.
Història
El codi ASCII es va desenvolupar en l'àmbit de la telegrafia, i es va usar per primera vegada comercialment com un codi de teleimpressió impulsat pels serveis de dades de Bell. Bell havia planejat usar un codi de sis bits, derivat de Fieldata, que afegia puntuació i lletres minúscules al més antic codi de teleimpressió Baudot, però se'ls va convèncer perquè s'unissin al subcomité de l'Agència d'Estàndards Nord-americà (American Standards Association, A.S.A.), que havien començat a desenvolupar el codi ASCII. Baudot va ajudar en l'automatització de l'enviament i recepció de missatges telegràfics, i va prendre moltes característiques del codi Morse; no obstant això, a diferència del codi Morse, Baudot va usar codis de longitud constant. Comparat amb els primers codis telegràfics, el codi proposat per Bell i A.S.A. va resultar en una reorganització més convenient per ordenar llistes (especialment perquè estava ordenat alfabèticament) i va afegir característiques com la 'seqüència de fuita'.
L'Agència d'Estàndards Nord-americà, que es convertiria més tard en l'Institut Nacional Nord-americà d'Estàndards (ANSI), va publicar per primera vegada el codi ASCII en 1963.[3] L'ASCII publicat en 1963 tenia una fletxa apuntant cap amunt (?) en lloc del circumflex (^) i una fletxa apuntant cap a l'esquerra en lloc del guió baix (_). La versió de 1967 va afegir les lletres minúscules, va canviar els noms d'alguns codis de control i va canviar de lloc els dos codis de control ACK i ESC de la zona de lletres minúscules a la zona de codis de control.
ASCII va ser actualitzat en conseqüència i publicat com ANSI X3.4-1968, ANSI X3.4-1977, i finalment ANSI X3.4-1986.
Altres òrgans d'estandardització han publicat codis de caràcters que són idèntics a ASCII. Aquests codis de caràcters reben sovint el nom d'ASCII, a pesar que ASCII es defineix estrictament solament pels estàndards ASA/ANSI:
L'Associació Europea de Fabricants d'Ordinadors (ECMA) va publicar edicions del seu clon d'ASCII, ECMA-6 en 1965, 1967, 1970, 1973, 1983, i 1991. L'edició de 1991 és idèntica a ANSI X3.4-1986.[4]
L'Organització Internacional d'Estandardització (ISO) va publicar la seva versió, ISO 646 (més tard ISO/IEC 646) en 1967, 1972, 1983 i 1991. En particular, ISO 646:1972 va establir un conjunt de versions específiques per a cada país on els caràcters de puntuació van ser reemplaçats amb caràcters no anglesos. ISO/IEC 646:1991 La International Reference Version és la mateixa que en l'ANSI X3.4-1986.
El Grup de Treball en Enginyeria d'Internet (IETF) va publicar una versió en 1969 com RFC 20, i va establir la versió estàndard per a Internet, basada en ANSI X3.4-1986, amb la publicació de RFC 1345 en 1992.
La versió d'IBM d'ANSI X3.4-1986 es va publicar en la literatura tècnica d'IBM com pàgina de codis 367.
El codi ASCII també està inclòs en el seu probable relleu, Unicode, constituint els primers 128 caràcters (o els 'més baixos'). Alguns observadors consideren el codi ASCII l'estàndard de programari més reeixit que mai s'hagi promulgat.
Els caràcters de control ASCII
El codi ASCII reserva els primers 32 codis (numerats del 0 al 31 en decimal) per a caràcters de control: codis no pensats originalment per representar informació imprimible, sinó per controlar dispositius (com impressores) que usaven ASCII. Per exemple, el caràcter 10 representa la funció "nova línia" (line feed), que fa que una impressora avanci el paper, i el caràcter 27 representa la tecla d'"escapada" (ESC) que sovint es troba en la cantonada superior esquerra dels teclats comuns.
El codi 127 (els set bits a un), un altre caràcter especial, equival a "suprimir" ("delete"). Encara que aquesta funció s'assembla a altres caràcters de control, els dissenyadors d'ASCII van idear aquest codi per poder "esborrar" una secció de paper perforat (un mitjà d'emmagatzematge popular fins a la dècada de 1980) mitjançant la perforació de tots els forats possibles d'una posició de caràcter concreta, reemplaçant qualsevol informació prèvia. Atès que el codi 0 era ignorat, va ser possible deixar buits (regions de forats) i més tard fer correccions.
Molts dels caràcters de control ASCII servien per marcar paquets de dades, o per controlar protocols de transmissió de dades (per exemple ENQuiry, amb el significat: hi ha alguna estació per aquí?, ACKnowledge: rebut o "justificant de recepció", Negative AcKnowledge: No rebut, Start Of Header: inici de capçalera, Start of TeXt: inici de text, End of TeXt: final de text, etc.). Fuita i SUBstitute permetien a un protocol de comunicacions, per exemple, marcar dades binàries perquè continguessin codis amb el mateix codi que el caràcter de protocol, i que el receptor pogués interpretar-los com a dades en lloc de com a caràcters propis del protocol.
Els dissenyadors del codi ASCII van idear els caràcters de separació per al seu ús en sistemes de cintes magnètiques.
Dos dels caràcters de control de dispositius, comunament anomenats XON i XOFF generalment exercien funcions de caràcters de control de flux per controlar el flux a cap a un dispositiu lent (com una impressora) des d'un dispositiu ràpid (com un ordinador), de manera que les dades no saturessin la capacitat de recepció del dispositiu lent i es perdessin.
Els primers usuaris d'ASCII van adoptar alguns dels codis de control per representar "metainformació" com a final-de-línia, principi/final d'un element de dades, etc. Aquestes assignacions sovint obstaculitzen en conflicte, de manera que parteix de l'esforç de convertir dades d'un format a un altre comporta fer les conversions correctes de metainformació. Per exemple, el caràcter que representa el final-de-línia en fitxers de text varia amb el sistema operatiu. Quan es copien arxius d'un sistema a un altre, el sistema de conversió ha de reconèixer aquests caràcters com a marques de final-de-línia i actuar en conseqüència.
Actualment els usuaris d'ASCII usen menys els caràcters de control, (amb algunes excepcions com la "tornada de carro" o "nova línia"). Els llenguatges moderns d'etiquetes, els protocols moderns de comunicació, el pas de dispositius basats en text a basats en gràfics, el declivi de les teleimpressores, les targetes perforades i els papers continus han deixat obsoleta la majoria de caràcters de control.
El codi del caràcter espai, designa a l'espai entre paraules, i es produeix normalment per la barra espaciadora d'un teclat. Els codis del 32 al 126 es coneixen com a caràcters imprimibles, i representen lletres, dígits, signes de puntuació i diversos símbols.
L'ASCII de set bits proporciona set caràcters "nacionals" i, si la combinació concreta de maquinari i programari ho permet, pot utilitzar combinacions de tecles per simular altres caràcters internacionals: en aquests casos un backspace pot precedir un accent obert o greu (en els estàndards britànic i americà, però només en aquests estàndards, es diu també "opening single quotation mark"), una titlla o una "marca de respiració".
Per fer servir el codi el valor decimal d'un digit com a alternativa a escriure directament el dígit dins un text, cal fer servir l'expressió &#nn;, on "nn" és el codi ASCII decimal. Exemple:
0 equival a 0 (zero)
A equival a A
Això permet escriure dígit que tenen un significat wiki en llocs que no ens interessa que els processi:
Els dígits del 0 al 9 es representen amb els seus valors prefixats amb el valor 0011 en binari (això significa que la conversió BCD-ASCII és una simple qüestió de prendre cada unitat bcd i prefixar-la amb 0011).
Les cadenes de bits de les lletres minúscules i majúscules només difereixen en un bit, simplificant d'aquesta forma la conversió d'un a un altre grup.
D'aquests, només els noms "US-ASCII" i "ASCII" s'usen àmpliament. Sovint es troben en el paràmetre de "codi de caràcters" opcional en la capçalera Content-Type d'alguns missatges ACARONI, en l'element equivalent "meta" d'alguns documents HTML, i en la part de declaració de codificació de caràcter de la capçalera d'alguns documents XML.
Variants d'ASCII
A mesura que la tecnologia informàtica es va difondre al llarg del món, es van desenvolupar diferents estàndards i les empreses van desenvolupar moltes variacions del codi ASCII per facilitar l'escriptura de llengües diferents a l'anglès que usessin alfabets llatins. Es poden trobar algunes d'aquestes variacions classificades com "ASCII Estès", encara que a vegades el terme s'aplica erròniament per cobrir totes les variants, fins i tot les que no preserven el conjunt de codis de caràcters original ASCII de set bits.
L'ISO 646 (1972), el primer intent de remeiar el biaix pro-anglès de la codificació de caràcters, va crear problemes de compatibilitat, car també era un codi de caràcters de 7 bits. No va especificar codis addicionals, de manera que reasignó alguns específicament per als nous llenguatges. D'aquesta forma es va tornar impossible saber en quina variant es trobava codificat el text, i, conseqüentment, els processadors de text podien tractar una sola variant.
La tecnologia va millorar i va aportar mitjans per representar la informació codificada en el vuitè bit de cada byte, alliberant aquest bit, la qual cosa va afegir altres 128 codis de caràcter addicionals que van quedar disponibles per a noves assignacions. Per exemple, IBM va desenvolupar pàgines de codi de 8 bits, com la pàgina de codis 437, que reemplaçava els caràcters de control amb símbols gràfics com a somriures, i va assignar altres caràcters gràfics addicionals als 128 bytes superiors de la pàgina de codis.
Alguns sistemes operatius com MS-DOS, podien treballar amb aquestes pàgines de codi, i els fabricants d'ordinadors personals van incloure suport per a aquestes pàgines en el seu maquinari.
Els estàndards de vuit bits com ISO 8859 i Mac US Roman van ser desenvolupats com a veritables extensions d'ASCII, deixant els primers 127 caràcters intactes i afegint únicament valors addicionals per sobre dels 7-bits. Això va permetre la representació d'un ventall major de llenguatges, però aquests estàndards van continuar sofrint incompatibilitats i limitacions. Encara avui, ISO-8859-1 i la seva variant Windows-1252 (de vegades cridada erròniament ISO-8859-1) i el codi ASCII original de 7 bits són els codis de caràcter més comunament utilitzats.
Unicode i Conjunt de Caràcters Universal (UCS) ISO/IEC 10646 defineixen un conjunt de caràcters molt major, i les seves diferents formes de codificació han començat a reemplaçar ISO 8859 i ASCII ràpidament en molts entorns. Mentre que ASCII bàsicament usa codis de 7-bits, Unicode i UCS usen "code points" o apuntadors relativament abstractes: nombres positius (incloent el zero) que assignen seqüències de 8 o més bits a caràcters. Per permetre la compatibilitat, Unicode i UCS assignen els primers 128 apuntadors als mateixos caràcters que el codi ASCII. D'aquesta forma es pot pensar en ASCII com un subconjunt molt petit d'Unicode i UCS. La popular codificació UTF-8 recomana l'ús d'un a quatre valors de 8 bits per a cada apuntador, on els primers 128 valors apunten als mateixos caràcters que ASCII. Altres codificacions de caràcters com UTF-16 s'assembla a ASCII en com representen els primers 128 caràcters d'Unicode, però tendeixen a usar 16 a 32 bits per caràcter, de manera que requereixen una conversió adequada perquè hi hagi compatibilitat entre ambdós codis de caràcter.
La paraula ASCIIbètic (o, més habitualment, la paraula "anglesa" ASCIIbetical) descriu l'ordenació segons l'ordre dels codis ASCII en lloc de l'ordre alfabètic.[5]
L'abreviatura ASCIIZ o ASCIZ es refereix a una cadena de caràcters acabada en zero (de l'anglès "zero").
El codi de caràcters ASCII és el suport d'una disciplina artística minoritària, l'art ASCII, que consisteix en la composició imatges mitjançant caràcters imprimibles ASCII. L'efecte resultant ha estat comparat amb el puntillisme, ja que les imatges produïdes amb aquesta tècnica generalment s'aprecien amb més detall en ser vistes a distància. L'art ASCII va començar essent un art experimental, però aviat es va popularitzar com a recurs per a representar imatges en suports incapaços de processar gràfics, com teletips, terminals, correus electrònics o algunes impressores.
Encara que es pot compondre art ASCII manualment mitjançant un editor de textos, també es poden convertir automàticament imatges i vídeos en ASCII mitjançant programari, com la llibreria Aalib (de llicència lliure), que ha aconseguit certa popularitat. Aalib està suportada per alguns programes de disseny gràfic, jocs i reproductors de vídeo.