ASCII

Codi estandard americà per a l'intercanvi d'informació
Per a altres significats, vegeu «ASCII (desambiguació)».

ASCII (de l'anglès American 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.

Hi ha 95 caràcters ASCII imprimibles, numerats del 32 al 126

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

modifica

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]

! " # $ % & ' () * +, -. / 0 1 2 3 4 5 6 7 8 9 :; < = > ?
@ 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

modifica

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.
  • La Unió Internacional de Telecomunicacions (ITU) va publicar la seva versió d'ANSI X3.4-1986, Recomanació ITU T.50, en 1992. A principis de la dècada de 1970 va publicar una versió com a Recomanació CCITT V.3.
  • Deutsches Institut für Normung va publicar una versió d'ASCII com l'estàndard DIN 66003 en 1974.
  • 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

modifica

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.


Binari Decimal Hex Abreviatura Repr AT Nom/Significat
0000 0000 0 00 NUL ? ^@ Caràcter Nul
0000 0001 1 01 SOH ? Inici encapçalament
0000 0010 2 02 STX ? ^B Inici de Text
0000 0011 3 03 ETX ? ^C Fi de Text
0000 0100 4 04 EOT ? ^D Fi de Transmissió
0000 0101 5 05 ENQ ? ^I Consulta
0000 0110 6 06 ACK ? ^F Reconeixement
0000 0111 7 07 BEL ? ^G Timbre
0000 1000 8 08 BS ? ^H Retrocés
0000 1001 9 09 HT ? ^I Tabulació horitzontal
0000 1010 10 0A LF ? ^J Line feed (Salt de línia)
0000 1011 11 0B VT ? ^K Tabulació Vertical
0000 1100 12 0C FF ? ^L Avançament (nova) pàgina
0000 1101 13 0D CR ? ^M Retorn de carro (enter)
0000 1110 14 0E SOTA ? ^N Desplaçament cap a fora
0000 1111 15 0F SI ? ^O Desplaçament cap a dins
0001 0000 16 10 DLE ? ^P Escriptura vinculació dades
0001 0001 17 11 DC1 ? ^Q Control dispositiu 1
0001 0010 18 12 DC2 ? ^R Control dispositiu 2
0001 0011 19 13 DC3 ? ^S Control dispositiu 3
0001 0100 20 14 DC4 ? ^T Control dispositiu 4
0001 0101 21 15 NAK ? ^O Configuració negativa
0001 0110 22 16 SYN ? ^V Inactivitat
0001 0111 23 17 ETB ? ^W Fi bloc de transmissió
0001 1000 24 18 CA ? ^X Cancel·lar
0001 1001 25 19 EM ? ^I Fi del medi
0001 1010 26 1A SUB ? ^Z Substitució
0001 1011 27 1B ESC ? ^[ or ESC Escapament
0001 1100 28 1C FS ? ^\ Separar fitxer
0001 1101 29 1D GS ? ^] Separació de grup
0001 1110 30 1E RS ? ^^ Separació de registre
0001 1111 31 1F US ? ^_ Separació d'unitats
0111 1111 127 7F DE EL ? ^?, Delete, or Backspace Delete

Caràcters imprimibles ASCII

modifica

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:

  • &#48; equival a 0 (zero)
  • &#65; equival a A

Això permet escriure dígit que tenen un significat wiki en llocs que no ens interessa que els processi:

  • &#35; equival a #


Binari Dec Hex Representació
0010 0000 32 20 espai ( )
0010 0001 33 21 !
0010 0010 34 22 "
0010 0011 35 23 #
0010 0100 36 24 $
0010 0101 37 25 %
0010 0110 38 26 &
0010 0111 39 27 '
0010 1000 40 28 (
0010 1001 41 29 )
0010 1010 42 2A *
0010 1011 43 2B +
0010 1100 44 2C ,
0010 1101 45 2D -
0010 1110 46 2E .
0010 1111 47 2F /
0011 0000 48 30 0
0011 0001 49 31 1
0011 0010 50 32 2
0011 0011 51 33 3
0011 0100 52 34 4
0011 0101 53 35 5
0011 0110 54 36 6
0011 0111 55 37 7
0011 1000 56 38 8
0011 1001 57 39 9
0011 1010 58 3A :
0011 1011 59 3B ;
0011 1100 60 3C <
0011 1101 61 3D =
0011 1110 62 3E >
0011 1111 63 3F ?
 
Binari Dec Hex Representació
0100 0000 64 40 @
0100 0001 65 41 A
0100 0010 66 42 B
0100 0011 67 43 C
0100 0100 68 44 D
0100 0101 69 45 E
0100 0110 70 46 F
0100 0111 71 47 G
0100 1000 72 48 H
0100 1001 73 49 I
0100 1010 74 4A J
0100 1011 75 4B K
0100 1100 76 4C L
0100 1101 77 4D M
0100 1110 78 4E N
0100 1111 79 4F O
0101 0000 80 50 P
0101 0001 81 51 Q
0101 0010 82 52 R
0101 0011 83 53 S
0101 0100 84 54 T
0101 0101 85 55 U
0101 0110 86 56 V
0101 0111 87 57 W
0101 1000 88 58 X
0101 1001 89 59 Y
0101 1010 90 5A Z
0101 1011 91 5B [
0101 1100 92 5C \
0101 1101 93 5D ]
0101 1110 94 5E ^
0101 1111 95 5F _
 
Binari Dec Hex Representació
0110 0000 96 60 `
0110 0001 97 61 a
0110 0010 98 62 b
0110 0011 99 63 c
0110 0100 100 64 d
0110 0101 101 65 e
0110 0110 102 66 f
0110 0111 103 67 g
0110 1000 104 68 h
0110 1001 105 69 i
0110 1010 106 6A j
0110 1011 107 6B k
0110 1100 108 6C l
0110 1101 109 6D m
0110 1110 110 6E n
0110 1111 111 6F o
0111 0000 112 70 p
0111 0001 113 71 q
0111 0010 114 72 r
0111 0011 115 73 s
0111 0100 116 74 t
0111 0101 117 75 u
0111 0110 118 76 v
0111 0111 119 77 w
0111 1000 120 78 x
0111 1001 121 79 y
0111 1010 122 7A z
0111 1011 123 7B {
0111 1100 124 7C |
0111 1101 125 7D }
0111 1110 126 7E ~

Trets estructurals

modifica
  • 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.

Altres noms per ASCII

modifica

La RFC 1345 (publicada al juny de 1992) i el registre IANA de codis de caràcters, reconeixen els següents noms alternatius per ASCII per al seu ús en Internet.

  • ANSI_X3.4-1968 (nom canònic)
  • ANSI_X3.4-1986
  • ASCII
  • US-ASCII (nom MIME recomanat)
  • us
  • ISO646-US
  • ISO_646.irv:1991
  • iso-ir-6
  • IBM367
  • cp367
  • csASCII

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

modifica

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").

Art ASCII

modifica
 _ _ ____ ____ ___ ___
 __ _ _ __| |_ /_\ / ___| / ___|_ _|_ _|
 / _` | '__| __| //_\\ \___ \| | | | | | 
| (_| | | | | | / ___ \ ___) | |___ | | | | 
 \__,_|_| \__| /_/ \_\____/ \____|___|___| 

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.

Vegeu també

modifica
  1. Noms de Domini Internacionalitzats - Glossari, Internet Corporation for Assigned Names and Numbers (ICANN). Consultat el 19-11-2008
  2. Internet Assigned Numbers Authority (28 de gener de 2005). "Codis de caràcters". Accedit el 7 d'agost de 2005.
  3. Brandel, Mary. «1963: The debut of ASCII». CNN. [Consulta: 26 maig 2022].
  4. ECMA International (desembre de 1991). Standard ECMA-6: 7-bit Coded Character Set, 6th edition Accedit el 17 de desembre de 2005.
  5. Jargon File. ASCIIbetical. Accedit el 17 de desembre de 2005.

Bibliografia

modifica