La codificación de caracteres nos permite representar un carácter del alfabeto de un lenguaje natural en otro símbolo de algún otro sistema, como un número o una secuencia de pulsos eléctricos en un sistema electrónico, aplicando normas o reglas de codificación.
Normas de Codificación
Indican cómo se codifica un carácter dado en un símbolo en otro sistema de representación. Ejemplos de esto son el código Morse, la norma ASCII o la UTF-8, entre otros.
ASCII
El código ASCII (acrónimo inglés de American Standard Code for Information Interchange: Código Estadounidense Estándar para el Intercambio de Información), pronunciado generalmente áski (quizás por sugerir ask key) es un código de caracteres basado en el alfabeto latino tal como se usa en inglés moderno y en otras lenguas occidentales. Fue creado en 1963 por el Comité Estadounidense de Estándares (ASA, conocido desde 1969 como el Instituto Estadounidense de Estándares Nacionales, o ANSI) como una evolución de los conjuntos de códigos utilizados entonces en telegrafía. Más 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. A menudo se llama incorrectamente ASCII a otros códigos de caracteres de 8 bits, como el estándar ISO-8859-1 que es una extensión que utiliza 8 bits para proporcionar caracteres adicionales usados en idiomas distintos al inglés, como el español.
ASCII fue publicado como estándar por primera vez en 1967 y fue actualizado por última vez en 1986. En la actualidad define códigos para 33 caracteres no imprimibles, de los cuales la mayoría son caracteres de control obsoletos que tienen efecto sobre cómo se procesa el texto, más otros 95 caracteres imprimibles que les siguen en la numeración (empezando por el carácter espacio). Casi todos los sistemas informáticos actuales utilizan el código ASCII o una extensión compatible para representar textos y para el control de dispositivos que manejan texto.
El código ASCII especifica una correspondencia entre cadenas de bits y símbolos escritos de la lengua, permitiendo de esta forma la comunicación entre dispositivos digitales así como su procesamiento y almacenamiento. El código de caracteres ASCII, especialmente la variante conocida como US-ASCII se usa hoy en casi todas las computadoras, bien sea de escritorio o portátiles así como estaciones de trabajo.
ASCII es, en sentido estricto, un código de siete bits, lo que significa que usa cadenas de siete dígitos binarios (que van de 0 a 127 en base decimal) para representar caracteres. En el momento en el que se introdujo el código ASCII muchas computadoras trabajaban con grupos de ocho bits (bytes u octetos), como la unidad mínima de información; donde el octavo bit se usaba habitualmente como bit de paridad con funciones de control de errores en líneas de comunicación u otras funciones específicas del dispositivo. Las máquinas que no usaban la comprobación de paridad asignaban al octavo bit el valor cero en la mayoría de los casos.
Historia
El código ASCII se desarrolló en el ámbito 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 los Laboratorios Bell, que había planeado usar un código de seis bits, que añadía puntuación y letras minúsculas al más antiguo código de teleimpresión Baudot, pero se les convenció para que se unieran al subcomité de la Agencia de Estándares 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 telegráficos, y tomó muchas características del código Morse; sin embargo, a diferencia del código Morse, Baudot usó códigos de longitud constante.
La Agencia de Estándares Estadounidense (ASA), que se convertiría más tarde en el Instituto Nacional Estadounidense de Estándares (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 subrayado (←). 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 ha sido actualizado y publicado primero como como ANSI X3.4-1968, luego ANSI X3.4-1977, y finalmente ANSI X3.4-1986.
El código ASCII también está incluido en su inminente relevo, Unicode, constituyendo los primeros 128 caracteres (o los más bajos). Algunos observadores consideran al código ASCII el estándar de software más exitoso que nunca se haya promulgado.
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 (como impresoras) que usaban ASCII. Por ejemplo, el carácter 10 representa la función "nueva línea" (Line Feed), que hace que una impresora avance el papel, y el carácter 27 representa la tecla "ESCape".
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 "acuse de recibo", Negative AcKnowledge: “No recibido”, Start Of Header: “inicio de cabecera”, Start of TeXt: “inicio de texto”, End of TeXt: “final de texto”, etc.).
Actualmente los usuarios de ASCII usan menos los caracteres de control, (con algunas excepciones como Carriage Return ("retorno de carro", o sea, la tecla ENTER) o New Line ("nueva línea"). Los lenguajes modernos de etiquetas, los protocolos modernos de comunicación, el paso de dispositivos basados en texto a basados en gráficos, 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 código 32, el carácter 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 caracteres imprimibles, y representan letras (mayúsculas y minúsculas, pero del alfabeto del idioma inglés), dígitos, signos de puntuación y varios símbolos especiales como $, %, & y otros.
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.
La notación BCD (Binary Coded Decimal: Decimal codificado como binario) consiste en representar cada dígito decimal como un número binario de 4 dígitos, de la siguiente manera:
Así entonces, en el código ASCII el carácter 5, por ejemplo, se representa concatenando los dígitos 0011 con su correspondiente valor numérico, o sea, 0101, dando así la secuencia de dígitos binarios 00110101, que corresponde a su vez al número decimal 53 el cual es, entonces, el código ASCII del carácter ‘5’.
Las cadenas de bits de las letras minúsculas y mayúsculas sólo difieren en un bit, el 5, simplificando de esta forma la conversión de uno a otro grupo. Por ejemplo:
Variantes de ASCII
A medida que la tecnología informática se difundió a lo largo del mundo, se desarrollaron diferentes estándares 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 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 carácter adicionales que quedaron disponibles para nuevas asignaciones. Por ejemplo, IBM desarrolló páginas de código de 8 bits que reemplazaban los caracteres de control con símbolos gráficos, y asignó otros caracteres gráficos adicionales a los 128 bytes superiores de la página de códigos.