stringtranslate.com

ASCII extendido

Salida del programa ascii en Cygwin

El ASCII extendido es un repertorio de codificaciones de caracteres que incluye (la mayor parte) del conjunto original de 96 caracteres ASCII , más hasta 128 caracteres adicionales. No existe una definición formal de "ASCII extendido", e incluso el uso del término es criticado en ocasiones, [1] [2] [3] porque puede interpretarse erróneamente como que el Instituto Nacional Estadounidense de Estándares (ANSI) había actualizado su estándar ANSI X3.4-1986 para incluir más caracteres, o que el término identifica una única codificación inequívoca, ninguno de los cuales es el caso.

La norma ISO 8859 fue la primera norma internacional que formalizó una expansión (limitada) del conjunto de caracteres ASCII: de las muchas variantes lingüísticas que codificó, la ISO 8859-1 ("ISO Latin 1"), que admite la mayoría de los idiomas de Europa occidental, es la más conocida en Occidente. Existen muchas otras codificaciones ASCII extendidas (más de 220 páginas de códigos DOS y Windows ). EBCDIC ("el otro" código de caracteres principal) también desarrolló muchas variantes extendidas (más de 186 páginas de códigos EBCDIC) a lo largo de las décadas.

Todos los sistemas operativos modernos utilizan Unicode , que admite miles de caracteres. Sin embargo, el código ASCII extendido sigue siendo importante en la historia de la informática y, para admitir varios conjuntos de caracteres ASCII extendidos, era necesario escribir software de manera que fuera mucho más fácil admitir el método de codificación UTF-8 más adelante.

Historia

El ASCII fue diseñado en la década de 1960 para teleimpresoras y telegrafía , y para algunos ordenadores. Las primeras teleimpresoras eran electromecánicas, no tenían microprocesador y solo tenían la memoria electromecánica suficiente para funcionar. Procesaban 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 de longitud y, por lo tanto, era necesario reservar una gran cantidad de códigos para tales controles. Eran impresoras de impacto derivadas de las 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 fomentaba un conjunto mínimo de glifos.

El código ASCII de siete bits mejoró los códigos anteriores de cinco y seis bits. De los 2 códigos 7 = 128, 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 de puntuación y símbolos: todos los símbolos de una máquina de escribir estadounidense estándar más unos pocos seleccionados para tareas de programación. Algunos periféricos populares solo implementaron un subconjunto de 64 caracteres imprimibles: el Teletype Model 33 no podía transmitir de la "a" a la "z" o cinco símbolos menos comunes ("`", "{", "|", "}" y "~") y cuando recibía dichos caracteres, imprimía en su lugar de la "A" a la "Z" (forzando todo en mayúsculas ) y otros cinco símbolos en su mayoría similares ("@", "[", "\", "]" y "^").

El conjunto de caracteres ASCII apenas es 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 un uso universal. Se desea, resulta útil o se requiere que haya 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.), algunos símbolos únicos utilizados por algunos lenguajes de programación, ideogramas , logogramas , caracteres de dibujo de cajas, etc.

El mayor problema para los usuarios de computadoras en todo el mundo eran otros alfabetos. El alfabeto inglés 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 por ß . Las variantes modificadas del 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. Al menos 29 conjuntos de variantes resultaron. 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 un significado a muchos de los caracteres reemplazados, se idearon soluciones alternativas como las secuencias de tres caracteres de C "??<" y "??>" para representar "{" y "}". [4] Los idiomas con alfabetos básicos diferentes podían utilizar la transliteración, como reemplazar todas las letras latinas por las letras cirílicas más parecidas (lo que daba como resultado un texto extraño pero bastante legible cuando el inglés se imprimía en cirílico o viceversa). También se idearon esquemas para que se pudieran 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 el soporte necesario. [ cita requerida ]

Cuando en los años 70 las computadoras y los periféricos se estandarizaron con bytes de ocho bits , se hizo evidente que las computadoras y el software podían manejar texto que utilizaba conjuntos de 256 caracteres casi sin costo adicional en programación y sin costo adicional en almacenamiento (suponiendo que el octavo bit no utilizado de cada byte no se reutilizara de alguna manera, como en la comprobación de errores, campos booleanos o empaquetando 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 consistían en ASCII más hasta 128 de los códigos no utilizados: se podían crear codificaciones que cubrían todos los idiomas más utilizados de Europa occidental (y de América Latina), como el danés, el holandés, el francés, el alemán, el portugués, el español, el sueco y más.

128 caracteres adicionales aún 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, tanto nacionales como propietarios, fue inevitable. La traducción entre estos conjuntos ( transcodificación ) es compleja (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 propietarios de los fabricantes siguieron siendo los más populares con diferencia, principalmente porque los estándares internacionales excluían caracteres populares o peculiares de culturas específicas.

Extensiones propietarias

Varias modificaciones y extensiones patentadas de ASCII aparecieron en computadoras mainframe y minicomputadoras que no eran EBCDIC , especialmente en universidades.

Hewlett-Packard comenzó a añadir caracteres europeos a su conjunto de caracteres ASCII extendido de 7 bits y 8 bits, HP Roman Extension, alrededor de 1978/1979 para su uso con sus estaciones de trabajo, terminales e impresoras. Más tarde, esto evolucionó hasta convertirse en los conjuntos de caracteres de 8 bits estándar ampliamente utilizados HP Roman-8 y HP Roman-9 (así como en 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 , basados ​​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 implementaban gráficos de bloques de baja resolución. (Cada carácter de gráfico de bloques se mostraba como una cuadrícula de 2x3 píxeles, y cada píxel de bloque se controlaba efectivamente mediante uno de los 6 bits inferiores). [5]

IBM introdujo códigos ASCII extendidos de ocho bits en el IBM PC original y más tarde 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 inventó ella misma como a muchos inventados y utilizados por otros fabricantes. En consecuencia, los conjuntos de caracteres se indican muy a menudo por su número de página de códigos IBM. En las páginas de códigos compatibles con ASCII, los 128 caracteres inferiores mantuvieron sus valores ASCII estándar, y se podían hacer 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 de líneas. 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 suelen usar 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 conjunto de caracteres Postscript .

Digital Equipment Corporation (DEC) desarrolló el conjunto de caracteres multinacionales , que tenía menos caracteres pero más combinaciones de letras y diacríticos. Fue compatible con los terminales de ordenador VT220 y posteriores de DEC . Más tarde se convirtió en la base de otros conjuntos de caracteres, como el Lotus International Character Set (LICS), el ECMA-94 y el ISO 8859-1 .

ISO 8859

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 los idiomas más comunes de Europa occidental. Otros estándares del grupo 8859 incluían ISO 8859-2 para idiomas de Europa del Este que utilizan el alfabeto latino e ISO 8859-5 para idiomas que utilizan el alfabeto cirílico , entre otros.

Una forma notable en la que las normas ISO difieren de algunas normas ASCII extendidas específicas de proveedores es que las 32 posiciones de 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 se utilizan para caracteres imprimibles (también están reservadas en Unicode [6] ). Esta convención fue ignorada casi universalmente por otros conjuntos ASCII extendidos.

Ventanas-1252

Microsoft pretendía utilizar los estándares ISO 8859 en Windows, [ cita requerida ] pero pronto reemplazó los caracteres de control C1 no utilizados con caracteres adicionales, creando el conjunto de caracteres propietario Windows-1252, que a veces se etiqueta incorrectamente como ANSI . Los caracteres agregados incluían comillas "rizadas" y otros elementos tipográficos como guiones largos , el símbolo del euro y letras que faltaban en francés y finlandés. Este se convirtió en el código ASCII extendido más utilizado en el mundo y, a menudo, se usa en la web incluso cuando se especifica 8859-1. [7] [8]

Confusión en el conjunto 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 deben 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 por defecto, verificando la configuración de idioma y país 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 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 a 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 aparecer como mojibake (un completo disparate). Debido a que muchos estándares de Internet utilizan ISO 8859-1, y debido a que Microsoft Windows (que utiliza 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, [ cita requerida ] [ ¿cuándo? ] el uso no anunciado de ISO 8859-1 es bastante común y, en general, se puede asumir a menos que haya indicaciones de lo contrario.

Muchos protocolos de comunicaciones , especialmente SMTP y HTTP , requieren que la codificación de caracteres del contenido esté etiquetada con identificadores de conjuntos de caracteres asignados por la IANA .

Véase también

Referencias

  1. ^ Benjamin Riefenstahl (26 de febrero de 2001). "Re: Información sobre Cygwin Termcap que involucra caracteres ASCII extendidos". cygwin (Lista de correo). Archivado desde el original el 11 de julio de 2013. Consultado el 2 de diciembre de 2012 .
  2. ^ S. Wolicki (23 de marzo de 2012). "Imprimir códigos ASCII extendidos en sql*plus" . Consultado el 17 de mayo de 2022 .
  3. ^ Mark J. Reed (28 de marzo de 2004). «vim: ¿cómo escribir en ASCII extendido?». Grupo de noticias : comp.editors . Consultado el 17 de mayo de 2022 .
  4. ^ "2.2.1.1 Secuencias de trígrafos". Fundamento de la Norma Nacional Estadounidense para Sistemas de Información - Lenguaje de programación - C. Archivado desde el original el 29 de septiembre de 2018. Consultado el 8 de febrero de 2019 .
  5. ^ Goldklang, Ira (2015). "Consejos y trucos gráficos". Archivado desde el original el 2017-07-29 . Consultado el 2017-07-29 .
  6. ^ "Controles C1 y suplemento Latin-1 | Rango: 0080–00FF" (PDF) . El estándar Unicode, versión 15.1 . Consorcio Unicode .
  7. ^ "Conjuntos de caracteres HTML". W3 Schools . Cuando un navegador detecta ISO-8859-1, normalmente utiliza Windows-1252 de forma predeterminada, porque Windows-1252 tiene 32 caracteres internacionales más.
  8. ^ "Codificación". WHATWG . 27 de enero de 2015. sec. 5.2 Nombres y etiquetas. Archivado desde el original el 4 de febrero de 2015 . Consultado el 4 de febrero de 2015 .

Enlaces externos