Centro de Información

ASCII y ANSI

ASCII es la abreviatura de American Standard Code for Information Interchange y una codificación de caracteres de 7 bits. Forma la base de muchas otras codificaciones de caracteres. En ASCII se definen 128 caracteres, de los cuales 95 son imprimibles y 33 no imprimibles. La siguiente tabla muestra los caracteres correspondientes y su notación decimal.

Tabla ASCII

Como se puede ver, el conjunto de caracteres de ASCII consiste en las letras latinas, los diez números arábigos  y algunos caracteres de puntuación y control. Los caracteres diacríticos utilizados en la mayoría de los idiomas basados en el alfabeto latino, como Ä o À, no están en el rango ASCII. Para mostrar estos caracteres, se requieren al menos 8 bits para tener suficiente espacio para codificar estos caracteres.

ANSI

Por esta razón, casi siempre se trabaja con el ANSI de 8 bits en lugar del ASCII de 7 bits. Con ANSI, pueden codificarse 256 caracteres diferentes (8 bits corresponde a 2 ^ 8 = 256 posibilidades) en lugar de solo 128 caracteres (7 bits corresponde a 2 ^ 7 = 128 posibilidades de codificación). ANSI en realidad significa American National Standards Institute, pero en tecnología informática, se utiliza casi exclusivamente para el grupo de juegos de caracteres que se explica a continuación.  ANSI es generalmente compatible con los 128 caracteres ASCII y también incluye algunos caracteres específicos del idioma, como Ä, À, ß, etc. Dependiendo de la extensión que se use, otros caracteres se codifican con los 128 caracteres restantes.

Latin 1

La extensión ASCII más común se muestra en la siguiente tabla y se llama Latin 1 (ISO 8859-1).

Tabla Latin-1

También hay otras extensiones como Latin 5 (ISO 8859-5, Turco), Latin 7 (ISO 8859-7 Celtic) o Latin 10 (ISO 8859-10 del sudeste europeo). Incluso con estas extensiones, los primeros 128 caracteres son los caracteres ASCII normales. Luego vienen los 128 caracteres que se necesitan para el idioma apropiado o el conjunto de caracteres correspondiente.

Limitaciones

Aunque la codificación ANSI solo requiere un byte por carácter y, por lo tanto, es la más efectiva de todas las codificaciones presentadas, esta eficiencia se produce a costa de la posibilidad de combinar caracteres de diferentes sistemas de caracteres o caracteres especiales en un archivo. Por supuesto, para texto en inglés, alemán, español o francés puro, ANSI es suficiente (para inglés incluso ASCII). Sin embargo, tan pronto como otros caracteres como las letras cirílicas o los caracteres especiales aparecen en el texto, ANSI ya no puede guardar estos caracteres. Además, el problema de la incompatibilidad se produce al intercambiar archivos, por exemplo, si el remitente haya guardado un archivo como Latin-1 y el destinatario trabaje con Latin-10. En este caso, los caracteres fuera del rango ASCII de 128 caracteres se pueden mostrar incorrectamente, porque el mismo código significa otros caracteres en Latin-1 y Latin-10. Para evitar este peligro, se recomienda guardar los archivos en un formato de código independiente del idioma, como el formatos Unicode UTF-7, UTF-8, UTF-16UTF-32. En estas codificaciones, cada carácter tiene un solo código que no difiere, por lo que no hay posibilidad de mostrar un carácter incorrecto.

ANSI y ASCII no tienen una marca de orden de bytes (BOM). En realidad, esto no es necesario, ya que de todos modos solo se escribe un byte por carácter y, por lo tanto, a endianidad no importa. Sin embargo, pueden surgir algunos problemas, si no hay una etiqueta si un archivo es ANSI o ASCII o no, porque también con formatos como UTF-8 no es imperativo tener una marca de orden de bytes. Por lo tanto, un archivo apropiado puede ser ANSI, ASCII, UTF-8 u otra codificación y es difícil interpretar estos archivos, si intenta mostrarlos de manera correcta.