CODIGO ASCII
· VISTA GENERAL:
Fue creado en 1963 por el Comité Estadounidense de Estandares
(ASA, conocido desde 1969 como el Instituto Estadounidense de Estandares
Nacionales, o ANSI) como una refundición o evolución de los
conjuntos de códigos utilizados entonces en telegrafía.
Mas tarde, en 1967, se incluyeron las minúsculas, y se
redefinieron algunos códigos de control para formar el código
conocido como
US-ASCII.
El código ASCII utiliza 7 bits para representar los caracteres, aunque
inicialmente empleaba un bit adicional (bit de
paridad) que se usaba para detectar errores en la transmisión.
ASCII fue publicado como
estandar por primera vez en 1967 y fue actualizado por última vez
en 1986. En la actualidad define códigos para 32 caracteres no
imprimibles, de los cuales la mayoría son caracteres de control
obsoletos que tienen efecto sobre cómo se procesa el texto, mas
otros 95 caracteres imprimibles que les siguen en la numeración
(empezando por el caracter espacio).
Casi todos los sistemas informaticos
actuales utilizan el código ASCII o una extensión compatible para
representar textos y para el control de dispositivos que manejan texto como
el teclado. No deben confundirse los códigos ALT+número de teclado
con los códigos ASCII.
· HISTORIA
El código ASCII se desarrolló en el ambito de la
telegrafía y se usó por primera vez comercialmente como un código de teleimpresión impulsado
por los servicios de datos de Bell.
Bell había planeado usar un código de seis bits, derivado de
Fieldata, que añadía puntuación y letras minúsculas
al mas antiguo código deteleimpresión Baudot, pero se les
convenció para que se unieran al subcomité de la Agencia de
Estandares Estadounidense (ASA), que habían empezado a desarrollar
el código ASCII. Baudot ayudó en la automatización del envío y
recepción de mensajes telegraficos, y tomó muchas
características del código
Morse; sin embargo, a diferencia del
código Morse, Baudot usó códigos de longitud constante.
Comparado con los primeros códigos telegraficos, el código
propuesto por Bell y ASA resultó en una reorganización mas
conveniente para ordenar listas (especialmente porque estaba ordenado
alfabéticamente) y añadió características como
la 'secuencia de escape'.
La Agencia de Estandares Estadounidense (ASA), que se convertiría
mas tarde en el Instituto Nacional Estadounidense de Estandares
(ANSI), publicó por primera vez el código ASCII en 1963. El ASCII
publicado en 1963 tenía una flecha apuntando hacia arriba (↑) en
lugar del circunflejo
(^) y una flecha apuntando hacia la izquierda en lugar del guion bajo (_). La versión de
1967 añadió las letras minúsculas, cambió los
nombres de algunos códigos de control y cambió de lugar los dos
códigos de control ACK y ESC de la zona de letras minúsculas a la
zona de códigos de control.
ASCII fue actualizado en consecuencia y publicado como ANSI X3.4-1968,
ANSI X3.4-1977, y finalmente ANSI X3.4-1986.
· LOS CARACTERES DE CONTROL ASCII:
El código ASCII reserva los primeros 32 códigos (numerados del 0
al 31 en decimal) para caracteres de control: códigos no pensados
originalmente para representar información imprimible, sino para
controlar dispositivos (comoimpresoras) que usaban ASCII. Por ejemplo, el
caracter 10 representa la función 'nueva línea'
(line feed), que hace que una impresora avance el papel, y el caracter
27 representa la tecla 'escape' que a menudo se encuentra en la
esquina superior izquierda de los teclados comunes.
El código 127 (los siete bits a uno), otro caracter especial, equivale
a 'suprimir' ('delete'). Aunque esta función se
asemeja a otros caracteres de control, los diseñadores de ASCII idearon este código para poder 'borrar' una
sección de papel perforado (un medio de almacenamiento popular hasta la
década de 1980) mediante la perforación de todos los agujeros
posibles de una posición de caracter concreta, reemplazando
cualquier información previa. Dado que el código 0 era ignorado,
fue posible dejar huecos (regiones de agujeros) y mas tarde hacer
correcciones.
Muchos de los caracteres de control ASCII servían para marcar paquetes
de datos, o para controlar protocolos de transmisión de datos (por
ejemplo ENQuiry, con el significado: ¿hay alguna estación por
ahí ACKnowledge: recibido o ', Start Of
Header: inicio de cabecera, Start of TeXt: inicio de texto, End of TeXt: final
de texto, etc.). ESCape y SUBstitute permitían a un
protocolo de comunicaciones, por ejemplo, marcar datos binarios para que
contuviesen códigos con el mismo código que el caracter de
protocolo, y que el receptor pudiese interpretarlos como
datos en lugar de como caracteres propios del protocolo.
Los diseñadores del código ASCII idearon
los caracteres de separación para su uso en sistemas de cintas
magnéticas.
Dos de los caracteres decontrol de dispositivos, comúnmente llamados XON
y XOFF generalmente ejercían funciones de caracteres de control de flujo
para controlar el flujo a hacia un dispositivo lento (como una impresora) desde
un dispositivo rapido (como un ordenador), de forma que los datos no saturasen
la capacidad de recepción del dispositivo lento y se perdiesen.
Los primeros usuarios de ASCII adoptaron algunos de los códigos de
control para representar 'metainformación' como
final-de-línea, principio/final de un elemento de datos, etc. Estas asignaciones
a menudo entraban en conflicto, así que parte del esfuerzo de
convertir datos de un formato a otro comporta hacer las conversiones correctas
de metainformación. Por ejemplo, el caracter
que representa el final-de-línea en ficheros de texto varía con
el sistema operativo. Cuando se copian archivos de un
sistema a otro, el sistema de conversión debe reconocer estos caracteres
como marcas de
final-de-línea y actuar en consecuencia.
Actualmente los usuarios de ASCII usan menos los caracteres de control, (con
algunas excepciones como 'retorno de carro' o 'nueva
línea'). Los lenguajes modernos de etiquetas, los protocolos
modernos de comunicación, el paso de dispositivos basados en texto a
basados en graficos, el declive de las teleimpresoras, las tarjetas
perforadas y los papeles continuos han dejado obsoleta la mayoría de
caracteres de control.
· CARACTERES IMPRIMIBLES ASCII
El caracter 'espacio', designa al espacio entre palabras, y se produce
normalmente por la barra espaciadora de un teclado.
Los códigos del
33 al 126 se conocen como
caracteresimprimibles, y representan letras, dígitos, signos de
puntuación y varios símbolos.
El ASCII de siete bits proporciona siete caracteres 'nacionales' y,
si la combinación concreta de hardware y software lo permite, puede
utilizar combinaciones de teclas para simular otros caracteres internacionales:
en estos casos un backspace puede preceder a un acento abierto o grave (en los
estandares britanico y estadounidense, pero sólo en estos
estandares, se llama también 'opening single quotation
mark'), una tilde o una 'marca de respiración'.
· RASGOS ESTRUCTURALES
1. Los dígitos del
0 al 9 se representan con sus valores prefijados con el valor 0011 en binario
(esto significa que la conversión BCD-ASCII es una simple cuestión
de tomar cada unidad bcd y prefijarla con 0011).
2. Las cadenas de bits de las letras minúsculas y mayúsculas
sólo difieren en un bit, simplificando de esta
forma la conversión de uno a otro grupo.
· VARIANTES DEL ASCII
A medida que la tecnología informatica se difundió a lo
largo del mundo, se desarrollaron diferentes
estandares y las empresas desarrollaron muchas variaciones del código ASCII
para facilitar la escritura de lenguas diferentes al inglés que usaran
alfabetos latinos. Se pueden encontrar algunas de esas variaciones clasificadas
como
'ASCII Extendido', aunque en ocasiones el término se aplica
erróneamente para cubrir todas las variantes, incluso las que no
preservan el conjunto de códigos de caracteres original ASCII de siete
bits.
La ISO 646 (1972), el primer intento de remediar el sesgo pro-inglés de
la codificación de caracteres, creó problemasde compatibilidad,
pues también era un código de caracteres
de 7 bits. No especificó códigos adicionales, así que
reasignó algunos específicamente para los nuevos lenguajes. De
esta forma se volvió imposible saber en qué variante se
encontraba codificado el texto, y, consecuentemente, los procesadores de texto
podían tratar una sola variante.
La tecnología mejoró y aportó medios para representar la
información codificada en el octavo bit de cada byte, liberando este bit, lo que añadió otros 128
códigos de caracter adicionales que quedaron disponibles para
nuevas asignaciones. Por ejemplo, IBM desarrolló paginas de
código de 8 bits, como la pagina de códigos 437, que
reemplazaba los caracteres de control con símbolos graficos como
sonrisas, y asignó otros caracteres graficos adicionales a los
128 bytes superiores de la pagina de códigos. Algunos sistemas
operativos como
DOS, podían trabajar con esas paginas de código, y los
fabricantes de ordenadores personales incluyeron soporte para dichas
paginas en su hardware.
Los estandares de ocho bits como
ISO 8859 y Mac OS Roman fueron desarrollados como verdaderas extensiones de ASCII, dejando
los primeros 127 caracteres intactos y añadiendo únicamente
valores adicionales por encima de los 7-bits. Esto permitió la
representación de un abanico mayor de
lenguajes, pero estos estandares continuaron sufriendo
incompatibilidades y limitaciones. Todavía hoy, ISO-8859-1 y su variante
Windows-1252 (a veces llamada erróneamente ISO-8859-1) y el
código ASCII original de 7 bits son los códigos de
caracter mas comúnmente utilizados.
Unicode yConjunto de Caracteres Universal (UCS) ISO/IEC 10646 definen un conjunto de caracteres mucho mayor, y sus diferentes
formas de codificación han empezado a reemplazar ISO 8859 y ASCII
rapidamente en muchos entornos. Mientras que ASCII basicamente usa
códigos de 7-bits, Unicode y UCS usan 'code points' o
apuntadores relativamente abstractos: números positivos (incluyendo el
cero) que asignan secuencias de 8 o mas bits a caracteres. Para permitir
la compatibilidad, Unicode y UCS asignan los primeros 128 apuntadores a los
mismos caracteres que el código ASCII. De esta forma se puede
pensar en ASCII como
un subconjunto muy pequeño de Unicode y UCS. La popular
codificación UTF-8 recomienda el uso de uno a cuatro valores de 8 bits
para cada apuntador, donde los primeros 128 valores apuntan a los mismos
caracteres que ASCII. Otras codificaciones de caracteres como UTF-16 se parece a ASCII en cómo representan
los primeros 128 caracteres de Unicode, pero tienden a usar 16 a 32 bits por
caracter, así que requieren de una conversión adecuada
para que haya compatibilidad entre ambos códigos de caracter.
La palabra ASCIIbético (o, mas habitualmente, la palabra
'inglesa' ASCIIbetical) describe la ordenación según el
orden de los códigos ASCII en lugar del orden alfabético.5
La abreviatura ASCIIZ o ASCIZ se refiere a una cadena de caracteres terminada
en cero (del inglés 'zero').
Es muy normal que el código ASCII sea embebido en otros sistemas de
codificación mas sofisticados y por esto debe tenerse claro cual
es papel del
código ASCII en la tabla o mapa de caracteres de un ordenador.