ASCII extendido es un repertorio de codificaciones de caracteres que incluye (la mayor parte) del conjunto de 96 caracteres ASCII originales , además de hasta 128 caracteres adicionales. No existe una definición formal de "ASCII extendido", e incluso el uso del término es a veces criticado, [1] [2] [3] porque puede interpretarse erróneamente en el sentido de que el American National Standards Institute (ANSI) había actualizado su estándar ANSI X3.4-1986 para incluir más caracteres, o que el término identifique una única codificación inequívoca, ninguno de los cuales es el caso.
El estándar ISO 8859 fue el primer estándar internacional que formalizó una expansión (limitada) del conjunto de caracteres ASCII: de las muchas variantes de idioma que codificaba, ISO 8859-1 ("ISO Latin 1"), que admite la mayoría de los idiomas de Europa occidental, Es más conocido en Occidente. Hay muchas otras codificaciones ASCII extendidas (más de 220 páginas de códigos de DOS y Windows ). EBCDIC ("el otro" código de caracteres principales) también desarrolló muchas variantes extendidas (más de 186 páginas de códigos EBCDIC) a lo largo de décadas.
Todos los sistemas operativos modernos utilizan Unicode , que admite miles de caracteres. Sin embargo, el ASCII extendido sigue siendo importante en la historia de la informática , y admitir múltiples conjuntos de caracteres ASCII extendidos requería que el software se escribiera de manera que fuera mucho más fácil admitir el método de codificación UTF-8 en el futuro.
ASCII fue diseñado en la década de 1960 para teleimpresores y telegrafía , y algo de informática. Los primeros teleimpresores eran electromecánicos y no tenían microprocesador y tenían suficiente memoria electromecánica para funcionar. Procesaron completamente un personaje a la vez y regresaron a un estado inactivo inmediatamente después; esto significaba que cualquier secuencia de control tenía que tener solo un carácter y, por lo tanto, era necesario reservar una gran cantidad de códigos para dichos controles. Eran impresoras de impacto derivadas de máquinas de escribir y solo podían imprimir un conjunto fijo de glifos, que se fundían en un elemento o elementos de tipo metálico; esto también fomentó un conjunto mínimo de glifos.
El ASCII de siete bits mejoró con respecto a los códigos anteriores de cinco y seis bits. De los 2 7 = 128 códigos, 33 se utilizaron para controles y 95 caracteres imprimibles cuidadosamente seleccionados (94 glifos y un espacio), que incluyen el alfabeto inglés (mayúsculas y minúsculas), dígitos y 31 signos y símbolos de puntuación: todos los símbolos de una máquina de escribir estándar estadounidense más algunos seleccionados para tareas de programación. Algunos periféricos populares solo implementaron un subconjunto de caracteres de impresión de 64: Teletype Model 33 no podía transmitir de "a" a "z" o cinco símbolos menos comunes ("`", "{", "|", "}" y "~"). y cuando recibieron dichos caracteres, imprimieron de la "A" a la "Z" ( todo en mayúsculas forzado ) y otros cinco símbolos en su mayoría similares ("@", "[", "\", "]" y "^") .
El conjunto de caracteres ASCII es apenas lo suficientemente grande para su uso en inglés estadounidense y carece de muchos glifos comunes en la composición tipográfica , y demasiado pequeño para su uso universal. Son deseables, útiles o necesarios muchas más letras y símbolos para representar directamente letras de alfabetos distintos del inglés, más tipos de puntuación y espaciado, más operadores y símbolos matemáticos (× ÷ ⋅ ≠ ≥ ≈ π, etc.), se utilizan algunos símbolos únicos por algunos lenguajes de programación, ideogramas , logogramas , caracteres de dibujo de cuadros, etc.
El mayor problema para los usuarios de computadoras en todo el mundo eran otros alfabetos. El alfabeto inglés de ASCII casi se adapta a los idiomas europeos, si las letras acentuadas se reemplazan por letras no acentuadas o aproximaciones de dos caracteres como ss para ß . Rápidamente aparecieron variantes modificadas de ASCII de 7 bits, intercambiando algunos símbolos menos utilizados por símbolos o letras muy deseados, como reemplazar "#" por "£" en los teletipos del Reino Unido, "\" por "¥" en Japón o "₩" en Corea, etc. Resultaron al menos 29 conjuntos de variantes. 12 puntos de código fueron modificados por al menos un conjunto modificado, dejando sólo 82 códigos "invariantes" . Sin embargo, los lenguajes de programación habían asignado significado a muchos de los caracteres reemplazados, se idearon soluciones alternativas, como secuencias de tres caracteres en C "??<" y "??>" para representar "{" y "}". [4] Los idiomas con alfabetos básicos diferentes podrían usar la transliteración, como reemplazar todas las letras latinas con las letras cirílicas más parecidas (lo que resulta en un texto extraño pero algo legible cuando el inglés se imprime en cirílico o viceversa). También se idearon esquemas para poder sobreimprimir dos letras (a menudo con el control de retroceso entre ellas) para producir letras acentuadas. Los usuarios no se sentían cómodos con ninguno de estos compromisos y, a menudo, no contaban con un soporte adecuado. [ cita necesaria ]
Cuando las computadoras y los periféricos se estandarizaron en bytes de ocho bits en la década de 1970, se hizo evidente que las computadoras y el software podían manejar texto que utiliza conjuntos de 256 caracteres casi sin costo adicional en programación ni costo adicional de almacenamiento. (Suponiendo que el octavo bit no utilizado de cada byte no se reutilizó de alguna manera, como verificación de errores, campos booleanos o empaquetar 8 caracteres en 7 bytes). Esto permitiría usar ASCII sin cambios y proporcionar 128 caracteres más. Muchos fabricantes idearon conjuntos de caracteres de 8 bits que constan de ASCII más hasta 128 códigos no utilizados: codificaciones que cubrían todos los idiomas más utilizados de Europa occidental (y América Latina), como el danés, holandés, francés, alemán, portugués, español. Se podrían hacer suecos y más.
128 caracteres adicionales todavía no son suficientes para cubrir todos los propósitos, todos los idiomas o incluso todos los idiomas europeos, por lo que la aparición de muchos conjuntos de caracteres de 8 bits derivados de ASCII nacionales y propietarios fue inevitable. Traducir entre estos conjuntos ( transcodificación ) es complejo (especialmente si un carácter no está en ambos conjuntos); y a menudo no se hacía, produciendo mojibake (texto resultante semilegible, a menudo los usuarios aprendían a decodificarlo manualmente). Eventualmente hubo intentos de cooperación o coordinación por parte de organismos de normalización nacionales e internacionales a fines de la década de 1990, pero los conjuntos patentados por el fabricante siguieron siendo los más populares con diferencia, principalmente porque los estándares internacionales excluían caracteres populares o peculiares de culturas específicas.
Varias modificaciones propietarias y extensiones de ASCII aparecieron en computadoras centrales y minicomputadoras que no pertenecen a EBCDIC , especialmente en las universidades.
Hewlett-Packard comenzó a agregar caracteres europeos a su conjunto de caracteres ASCII extendido de 7 bits/8 bits HP Roman Extension alrededor de 1978/1979 para usarlos con sus estaciones de trabajo, terminales e impresoras. Posteriormente, esto evolucionó hasta convertirse en los conjuntos de caracteres regulares de 8 bits HP Roman-8 y HP Roman-9 (así como en varias variantes).
Las computadoras domésticas Atari y Commodore agregaron muchos símbolos gráficos a su ASCII no estándar (Respectivamente, ATASCII y PETSCII , basado en el estándar ASCII original de 1963).
El conjunto de caracteres TRS-80 para la computadora doméstica TRS-80 agregó 64 caracteres semigráficos (0x80 a 0xBF) que implementaron gráficos en bloques de baja resolución. (Cada carácter gráfico de bloque se muestra como una cuadrícula de píxeles de 2x3, con cada píxel de bloque controlado efectivamente por uno de los 6 bits inferiores) .
IBM introdujo códigos ASCII extendidos de ocho bits en la PC IBM original y luego produjo variaciones para diferentes idiomas y culturas. IBM llamó páginas de códigos a estos conjuntos de caracteres y asignó números tanto a los que ellos mismos inventaron como a muchos inventados y utilizados por otros fabricantes. En consecuencia, los juegos de caracteres suelen indicarse mediante su número de página de códigos IBM. En las páginas de códigos compatibles con ASCII, los 128 caracteres inferiores mantenían sus valores ASCII estándar y podían estar disponibles diferentes páginas (o conjuntos de caracteres) en los 128 caracteres superiores. Las computadoras DOS construidas para el mercado norteamericano, por ejemplo, usaban la página de códigos 437 , que incluía caracteres acentuados necesarios para francés, alemán y algunos otros idiomas europeos, así como algunos caracteres gráficos de dibujo lineal. El conjunto de caracteres más grande hizo posible crear documentos en una combinación de idiomas como inglés y francés (aunque las computadoras francesas generalmente usan la página de códigos 850 ), pero no, por ejemplo, en inglés y griego (que requerían la página de códigos 737 ).
Apple Computer introdujo sus propios códigos ASCII extendidos de ocho bits en Mac OS , como Mac OS Roman . Apple LaserWriter también introdujo el juego de caracteres Postscript .
Digital Equipment Corporation (DEC) desarrolló el conjunto de caracteres multinacional , que tenía menos caracteres pero más combinaciones de letras y signos diacríticos. Fue compatible con los terminales informáticos VT220 y posteriores DEC . Posteriormente, esto se convirtió en la base de otros conjuntos de caracteres, como Lotus International Character Set (LICS), ECMA-94 e ISO 8859-1 .
En 1987, la Organización Internacional de Normalización (ISO) publicó un conjunto de estándares para extensiones ASCII de ocho bits, ISO 8859. El más popular de ellos fue ISO 8859-1 (también llamado "ISO Latin 1") que contiene caracteres suficientes para las lenguas más comunes de Europa occidental. Otros estándares del grupo 8859 incluyeron ISO 8859-2 para idiomas de Europa del Este que utilizan la escritura latina e ISO 8859-5 para idiomas que utilizan la escritura cirílica , entre otros.
Una forma notable en la que los estándares ISO difieren de algunos ASCII extendidos específicos del proveedor es que las posiciones de 32 caracteres 80 16 a 9F 16 , que corresponden a los caracteres de control ASCII con el bit de orden superior 'establecido', están reservadas por ISO para uso de control y no utilizados para caracteres imprimibles (también están reservados en Unicode [6] ). Esta convención fue ignorada casi universalmente por otros conjuntos ASCII extendidos.
Microsoft tenía la intención de utilizar los estándares ISO 8859 en Windows, [ cita necesaria ] pero pronto reemplazó los caracteres de control C1 no utilizados con caracteres adicionales, creando el conjunto de caracteres patentado Windows-1252, que a veces está mal etiquetado como ANSI . Los caracteres agregados incluían comillas "rizadas" y otros elementos tipográficos como el guión , el signo del euro y letras que faltaban en francés y finlandés. Este se convirtió en el ASCII extendido más utilizado en el mundo y, a menudo, se utiliza en la web incluso cuando se especifica 8859-1. [7] [8]
El significado de cada punto del código extendido puede ser diferente en cada codificación. Para interpretar y mostrar correctamente datos de texto (secuencias de caracteres) que incluyen códigos extendidos, el hardware y el software que lee o recibe el texto debe utilizar la codificación ASCII extendida específica que se le aplica. La aplicación de una codificación incorrecta provoca la sustitución irracional de muchos o todos los caracteres extendidos del texto.
El software puede utilizar una selección de codificación fija, o puede seleccionar de una paleta de codificaciones de forma predeterminada, verificando la configuración de país e idioma de la computadora, leyendo una declaración en el texto, analizando el texto , preguntando al usuario, permitiendo que el usuario seleccione o anule, y/o por defecto a la última selección. Cuando se transfiere texto entre computadoras que utilizan diferentes sistemas operativos, software y codificaciones, aplicar una codificación incorrecta puede ser algo común.
Debido a que el alfabeto inglés completo y los caracteres más utilizados en inglés están incluidos en los puntos de código de siete bits de ASCII, que son comunes a todas las codificaciones (incluso a la mayoría de las codificaciones patentadas), el texto en inglés se daña menos al interpretarlo con el codificación incorrecta, pero el texto en otros idiomas puede mostrarse como mojibake (una completa tontería). Debido a que muchos estándares de Internet usan ISO 8859-1, y debido a que Microsoft Windows (que usa el superconjunto de la página de códigos 1252 de ISO 8859-1) es el sistema operativo dominante para las computadoras personales en la actualidad, [ cita necesaria ] [ ¿ cuándo? ] el uso no anunciado de la Norma ISO 8859-1 es bastante común y, en general, puede asumirse a menos que haya indicaciones de lo contrario.
Muchos protocolos de comunicación , sobre todo SMTP y HTTP , requieren que la codificación de caracteres del contenido esté etiquetada con identificadores de juego de caracteres asignados por la IANA .
Cuando un navegador detecta ISO-8859-1, normalmente utiliza de forma predeterminada Windows-1252, porque Windows-1252 tiene 32 caracteres internacionales más.