ASCII extendido - Extended ASCII

Salida del programa ascii en Cygwin

Las codificaciones de caracteres ASCII extendido ( EASCII o ASCII alto ) son codificaciones de ocho bits o más grandes que incluyen los caracteres ASCII estándar de siete bits , más caracteres adicionales. El uso del término "ASCII extendido" por sí solo a veces se critica, porque se puede interpretar erróneamente en el sentido de que el estándar ASCII se ha actualizado para incluir más de 128 caracteres o que el término identifica inequívocamente una sola codificación, ninguna de las cuales es la caso.

Hay muchas codificaciones ASCII extendidas (más de 220 páginas de códigos de DOS y Windows). EBCDIC ("el otro" código principal de caracteres de 8 bits) también desarrolló muchas variantes extendidas (más de 186 páginas de códigos EBCDIC) a lo largo de las décadas.

Historia

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, no tenían microprocesador y solo tenían suficiente memoria electromecánica para funcionar. Procesaron completamente un carácter a la vez, volviendo 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 la máquina 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.

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 los controles, y 95 cuidadosamente seleccionados caracteres imprimibles (94 glifos y un espacio), que incluyen el alfabeto Inglés (mayúsculas y minúsculas), dígitos, y 31 marcas y símbolos de puntuación: todos los símbolos de una máquina de escribir estándar de EE. UU. más algunos seleccionados para tareas de programación. Algunos periféricos populares solo implementaron un subconjunto de 64 caracteres de impresión: el modelo 33 de teletipo no podía transmitir de la "a" a la "z" o cinco símbolos menos comunes ("` "," {"," | ","} "y "~"). y cuando recibieron tales caracteres, en su lugar imprimieron de la "A" a la "Z" (forzadas todas en mayúsculas ) y otros cinco símbolos en su mayoría similares ("@", "[", "\", "]" y "^") .

El conjunto de caracteres ASCII es apenas lo suficientemente grande para el uso en inglés de EE. UU. Y carece de muchos glifos comunes en la composición tipográfica , y es demasiado pequeño para el uso universal. Muchas más letras y símbolos son deseables, útiles o necesarios 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.), algunos símbolos únicos utilizados por algunos lenguajes de programación, ideogramas , logogramas , caracteres de dibujo de caja, etc. Durante años, las aplicaciones se diseñaron en torno al conjunto de 64 caracteres y / o el conjunto de 95 caracteres, por lo que varios caracteres adquirieron nuevos usos. Por ejemplo, ASCII carece de "÷", por lo que la mayoría de los lenguajes de programación usan "/" para indicar división.

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 sin acentos o aproximaciones de dos caracteres. Las variantes modificadas de ASCII de 7 bits aparecieron rápidamente, 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. Se produjeron al menos 29 conjuntos de variantes. 12 puntos de código fueron modificados por al menos un conjunto modificado, dejando solo 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 las secuencias de tres caracteres en C "?? (" y "??)" para representar "{" y "}". 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 cercanas (lo que da como resultado un texto extraño pero algo legible cuando el inglés se imprimió en cirílico o viceversa). También se diseñaron esquemas para que dos letras pudieran sobreimprimirse (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, recibían un apoyo deficiente.

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 usa conjuntos de 256 caracteres casi sin costo adicional en programación y sin costo adicional de almacenamiento. (Suponiendo que el octavo bit no utilizado de cada byte no se reutilizó de alguna manera, como la comprobación de errores, los campos booleanos o el empaquetado de 8 caracteres en 7 bytes). Esto permitiría utilizar 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 de los códigos no utilizados. Dado que Europa del Este estaba políticamente separada en ese momento, se podían hacer codificaciones de 8 bits que cubrían todos los idiomas europeos (y latinoamericanos) más utilizados, como danés, holandés, francés, alemán, portugués, español, sueco y más, a menudo llamado "latino" o "romano".

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 nacionales y patentados derivados de ASCII fue inevitable. Traducir entre estos conjuntos ( transcodificación ) es complejo (especialmente si un carácter no está en ambos conjuntos); ya menudo no se hizo, produciendo mojibake (texto resultante semi-legible, a menudo los usuarios aprendieron cómo decodificarlo manualmente). Eventualmente hubo intentos de cooperación o coordinación por parte de organismos de estándares nacionales e internacionales a fines de la década de 1990, pero los conjuntos patentados de fabricación siguieron siendo los más populares con diferencia, principalmente porque los estándares excluían a muchos personajes populares.

Extensiones propietarias

Varias modificaciones patentadas y extensiones de ASCII aparecieron en computadoras centrales y miniordenadores no EBCDIC , especialmente en universidades.

Hewlett-Packard comenzó a agregar caracteres europeos a su conjunto extendido de caracteres ASCII de 7 bits / 8 bits HP Roman Extension alrededor de 1978/1979 para usar con sus estaciones de trabajo, terminales e impresoras. Esto más tarde se convirtió en los conjuntos de caracteres de 8 bits habituales ampliamente utilizados HP Roman-8 y HP Roman-9 (así como una serie de 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 el TRS-80 ordenador personal añadió 64 Semigráficos caracteres (0x80) a través 0xBF que implementaron baja resolución de bloques gráficos. (Cada carácter de 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 el IBM PC original y luego produjo variaciones para diferentes idiomas y culturas. IBM llamó a estos conjuntos de caracteres páginas de códigos 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 se indican con mucha frecuencia por su número de página de códigos de IBM. En las páginas de códigos compatibles con ASCII, los 128 caracteres inferiores mantuvieron sus valores estándar US-ASCII, y diferentes páginas (o conjuntos de caracteres) podrían estar disponibles 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 de dibujo de líneas gráficas. 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 usualmente usan la página de códigos 850 ), pero no, por ejemplo, en inglés y griego (que requería 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 . El 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 diacríticos. Fue compatible con el VT220 y terminales de computadora DEC posteriores . Más tarde, esto se convirtió en la base de otros conjuntos de caracteres, como Lotus International Character Set (LICS), ECMA-94 e ISO 8859-1 .

ISO 8859 y adaptaciones patentadas

Finalmente, ISO lanzó este estándar como ISO 8859 que describe su propio conjunto de extensiones ASCII de ocho bits. El más popular es ISO 8859-1 , también llamado ISO Latin 1 , que contenía caracteres suficientes para los idiomas más comunes de Europa occidental. También se estandarizaron variaciones para otros idiomas: ISO 8859-2 para idiomas de Europa del Este e ISO 8859-5 para idiomas cirílicos, por ejemplo.

Una forma notable en la que los conjuntos de caracteres ISO difieren de las páginas de códigos es que las posiciones de caracteres 128 a 159, correspondientes a los caracteres de control ASCII con el conjunto de bits de orden superior, no se utilizan específicamente y no están definidas en las normas ISO, aunque se han utilizado con frecuencia. para caracteres imprimibles en páginas de códigos patentados, una ruptura de los estándares ISO que era casi universal.

Más tarde, Microsoft creó la página de códigos 1252 , un superconjunto compatible de ISO 8859–1 con caracteres adicionales en el rango ISO no utilizado. La página de códigos 1252 es la codificación de caracteres estándar de las versiones de idiomas de Europa occidental de Microsoft Windows , incluidas las versiones en inglés. ISO 8859-1 es la codificación de caracteres de 8 bits común utilizada por el sistema X Window , y la mayoría de los estándares de Internet la usaban antes de Unicode .

Confusión del juego de caracteres

El significado de cada punto de código extendido puede ser diferente en cada codificación. Para interpretar y mostrar correctamente los 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 una sustitución irracional de muchos o todos los caracteres extendidos del texto.

El software puede usar una selección de codificación fija, o puede seleccionar de una paleta de codificaciones por defecto, verificando la configuración de la nación y el 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 usan diferentes sistemas operativos, software y codificaciones, la aplicación de la 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 la mayoría de las codificaciones propietarias), el texto en inglés se daña menos al interpretarlo con la 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 (usando el superconjunto de la página de códigos 1252 de ISO 8859-1) es el sistema operativo dominante para computadoras personales en la actualidad, el uso no anunciado de ISO 8859-1 es bastante común y puede generalmente se asume a menos que haya indicaciones de lo contrario.

Muchos protocolos de comunicación , principalmente SMTP y HTTP , requieren que la codificación de caracteres del contenido se etiquete con identificadores de juego de caracteres asignados por IANA .

Codificaciones de caracteres de varios bytes

Algunas codificaciones de caracteres de varios bytes (codificaciones de caracteres que pueden manejar más de 256 caracteres diferentes) también son verdaderas ASCII extendidas. Eso significa que todos los caracteres ASCII están codificados con un solo byte con el mismo valor que ASCII, y estos valores no se utilizan en ningún otro lugar. Se pueden usar en formatos de archivo donde solo se usan bytes ASCII para palabras clave y sintaxis de formato de archivo, mientras que los bytes 0x80-0xFF pueden usarse para texto libre, incluida la mayoría de los lenguajes de programación, donde las palabras clave del idioma, los nombres de variables y los nombres de funciones deben estar en ASCII, pero las constantes de cadena y los comentarios pueden utilizar caracteres no ASCII. Esto hace que sea mucho más fácil introducir un juego de caracteres de varios bytes en los sistemas existentes que usan ASCII extendido.

UTF-8 es verdadero ASCII extendido, al igual que algunas codificaciones de código Unix extendido .

ISO / IEC 6937 no es ASCII extendido porque su punto de código 0x24 corresponde al signo de moneda general (¤) en lugar del signo de dólar ($), pero si considera que los pares de acento + letras son un carácter extendido seguido de el ASCII.

Shift JIS no es un verdadero ASCII extendido. Además de reemplazar la barra invertida con el carácter yen , los caracteres multibyte también pueden incluir bytes ASCII. Evita el uso de delimitadores y controles ASCII, por lo que en muchos casos, como HTML, puede funcionar. UTF-16 es ASCII aún menos extendido porque los caracteres ASCII se almacenan como dos bytes con un byte igual a 0x00. Portar un sistema existente para admitir conjuntos de caracteres como Shift JIS o UTF-16 es complicado y propenso a errores.

Uso en lenguajes legibles por computadora

Para lenguajes de programación y lenguajes de documentos como C y HTML , el principio de ASCII extendido es importante, ya que permite que se admitan muchas codificaciones diferentes y, por lo tanto, muchos lenguajes humanos sean compatibles con poco esfuerzo de programación adicional en el software que interpreta los archivos de lenguaje legibles por computadora .

El principio de ASCII extendido significa que:

  • todos los bytes ASCII (0x00 a 0x7F) tienen el mismo significado en todas las variantes de ASCII extendido,
  • Los bytes que no son bytes ASCII se utilizan solo para texto libre y no para etiquetas, palabras clave u otras características que tienen un significado especial para el software de interpretación.

Ver también

Referencias

enlaces externos