ASCII

Estándar de codificación de caracteres americano

ASCII
Tabla ASCII de MIL-STD-188-100 (1972)
MIME / IANAnosotros-ascii
Alias(es)ISO-IR-006, [1] ANSI_X3.4-1968, ANSI_X3.4-1986, ISO_646.irv:1991, ISO646-US, EE. UU., IBM367, cp367 [2]
Idioma(s)Inglés (creado para; no admite todos los préstamos), malayo , rotokas , interlingua , ido y X-SAMPA
ClasificaciónSerie ISO/IEC 646
Extensiones
Precedido porITA 2 , DATOS DE CAMPO
Sucedido porISO/IEC 8859 , ISO/IEC 10646 ( Unicode )

ASCII ( / ˈ æ s k / ASS-kee),[3]: 6 acrónimo deAmerican Standard Code for Information Interchange, es unestándarde codificación de caracteresequipos de telecomunicacionesy otros dispositivos. ASCII tiene solo 128puntos de código, de los cuales solo 95 son caracteres imprimibles, lo que limita severamente su alcance. El conjunto de puntuación disponible tuvo un impacto significativo en la sintaxis de los lenguajes informáticos y el marcado de texto. ASCII influyó enormemente en el diseño de los conjuntos de caracteres utilizados por las computadoras modernas, incluidoUnicode, que tiene más de un millón de puntos de código, pero los primeros 128 de estos son los mismos que ASCII.

La Autoridad de Números Asignados en Internet (IANA) prefiere el nombre US-ASCII para esta codificación de caracteres. [2]

ASCII es uno de los hitos del IEEE . [4]

Descripción general

El ASCII se desarrolló en parte a partir del código telegráfico . Su primer uso comercial fue en el Teletipo Modelo 33 y el Teletipo Modelo 35 como un código de teleimpresora de siete bits promovido por los servicios de datos de Bell. [ ¿Cuándo? ] El trabajo sobre el estándar ASCII comenzó en mayo de 1961, con la primera reunión del subcomité X3.2 de la Asociación Estadounidense de Estándares (ASA) (ahora el Instituto Nacional Estadounidense de Estándares o ANSI). La primera edición del estándar se publicó en 1963, [5] [6] sufrió una revisión importante durante 1967, [7] [8] y experimentó su actualización más reciente durante 1986. [9] En comparación con los códigos telegráficos anteriores, el código Bell propuesto y el ASCII se ordenaron para una clasificación más conveniente (es decir, alfabetización) de listas y agregaron características para dispositivos distintos de los teleimpresores. [9]

El uso del formato ASCII para el intercambio de redes se describió en 1969. [10] Ese documento se elevó formalmente a estándar de Internet en 2015. [11]

Originalmente basado en el alfabeto inglés (moderno) , ASCII codifica 128 caracteres específicos en números enteros de siete bits, como se muestra en la tabla ASCII de este artículo. [12] Noventa y cinco de los caracteres codificados son imprimibles: estos incluyen los dígitos del 0 al 9 , letras minúsculas de la a a la z , letras mayúsculas de la A a la Z y símbolos de puntuación . Además, la especificación ASCII original incluía 33 códigos de control no imprimibles que se originaron con los modelos de teletipo ; la mayoría de estos ahora están obsoletos, [13] aunque algunos todavía se usan comúnmente, como el retorno de carro , el avance de línea y los códigos de tabulación .

Por ejemplo, la i minúscula se representaría en la codificación ASCII por el binario 1101001 = hexadecimal 69 ( i es la novena letra) = decimal 105.

A pesar de ser un estándar estadounidense, ASCII no tiene un punto de código para el centavo (¢). Tampoco admite términos en inglés con signos diacríticos como résumé y jalapeño , ni nombres propios con signos diacríticos como Beyoncé (aunque en ciertos dispositivos los caracteres podrían combinarse con signos de puntuación como tilde (~) y backtick (`) para aproximarse a dichos caracteres).

Historia

ASCII (1963). Control Se muestran imágenes de controles equivalentes cuando existen, o un punto gris en caso contrario.

El Código Estándar Americano para el Intercambio de Información (ASCII) fue desarrollado bajo los auspicios de un comité de la Asociación Estadounidense de Estándares (ASA), llamado el comité X3, por su subcomité X3.2 (posteriormente X3L2), y más tarde por el grupo de trabajo X3.2.4 de ese subcomité (ahora INCITS ). La ASA más tarde se convirtió en el Instituto de Estándares de los Estados Unidos de América (USASI) [3] : 211  y finalmente se convirtió en el Instituto Nacional Estadounidense de Estándares (ANSI).

Una vez completados los demás caracteres especiales y códigos de control, se publicó ASCII como ASA X3.4-1963, [6] [14] dejando 28 posiciones de código sin ningún significado asignado, reservadas para una futura estandarización, y un código de control sin asignar. [3] : 66, 245  Hubo cierto debate en ese momento sobre si debería haber más caracteres de control en lugar del alfabeto en minúsculas. [3] : 435  La indecisión no duró mucho: durante mayo de 1963, el Grupo de Trabajo del CCITT sobre el Nuevo Alfabeto Telegráfico propuso asignar caracteres en minúsculas a los palos [a] [15] 6 y 7, [16] y la Organización Internacional de Normalización TC 97 SC 2 votó durante octubre para incorporar el cambio en su borrador de norma. [17] El grupo de trabajo X3.2.4 votó su aprobación para el cambio a ASCII en su reunión de mayo de 1963. [18] La ubicación de las letras minúsculas en los palitos [a] [15] 6 y 7 provocó que los caracteres difirieran en patrón de bits de las mayúsculas por un solo bit, lo que simplificó la correspondencia de caracteres sin distinción entre mayúsculas y minúsculas y la construcción de teclados e impresoras.

El comité X3 realizó otros cambios, incluidos otros caracteres nuevos (los caracteres de llave y barra vertical ), [19] renombró algunos caracteres de control (SOM se convirtió en inicio de encabezado (SOH)) y movió o eliminó otros (RU fue eliminado). [3] : 247–248  ASCII se actualizó posteriormente como USAS X3.4-1967, [7] [20] luego USAS X3.4-1968, [21] ANSI X3.4-1977 y, finalmente, ANSI X3.4-1986. [9] [22]

Revisiones

  • ASA X3.4-1963 [3] [6] [20] [22]
  • ASA X3.4-1965 (aprobado, pero no publicado, no obstante utilizado por las estaciones de visualización IBM 2260 y 2265 y el control de visualización IBM 2848 ) [3] : 423, 425–428, 435–439  [23] [20] [22]
  • Avión de combate USAS X3.4-1967 [3] [7] [22]
  • Avión de combate USAS X3.4-1968 [3] [21] [22]
  • Norma ANSI X3.4-1977 [22]
  • Norma ANSI X3.4-1986 [9] [22]
  • Norma ANSI X3.4-1986 (R1992)
  • Norma ANSI X3.4-1986 (R1997)
  • ANSI INCITS 4-1986 (R2002) [24]
  • ANSI INCITS 4-1986 (R2007) [25]
  • INCITS 4-1986 (R2012) [26]
  • INCITS 4-1986 (R2017) [27]
  • INCITS 4-1986 (R2022) [28]

En el estándar X3.15, el comité X3 también abordó cómo se debía transmitir el código ASCII ( el bit menos significativo primero) [3] : 249–253  [29] y cómo se debía grabar en cinta perforada. Propusieron un estándar de 9 pistas para cinta magnética e intentaron abordar algunos formatos de tarjetas perforadas .

Consideraciones de diseño

Ancho de bit

El subcomité X3.2 diseñó ASCII basándose en los sistemas de codificación de teleimpresora anteriores. Al igual que otras codificaciones de caracteres , ASCII especifica una correspondencia entre patrones de bits digitales y símbolos de caracteres (es decir, grafemas y caracteres de control ). Esto permite que los dispositivos digitales se comuniquen entre sí y procesen, almacenen y comuniquen información orientada a caracteres, como el lenguaje escrito. Antes de que se desarrollara ASCII, las codificaciones en uso incluían 26 caracteres alfabéticos , 10 dígitos numéricos y de 11 a 25 símbolos gráficos especiales. Para incluir todos estos, y caracteres de control compatibles con el estándar Alfabeto Telegráfico Internacional N.º 2 (ITA2) del Comité Consultatif International Téléphonique et Télégraphique (CCITT) de 1932, [30] [31] FIELDATA (1956 [ cita requerida ] ), y el EBCDIC temprano (1963), se requirieron más de 64 códigos para ASCII.

El ITA2 se basó a su vez en el código Baudot , el código telegráfico de 5 bits que Émile Baudot inventó en 1870 y patentó en 1874. [31]

El comité debatió la posibilidad de una función de desplazamiento (como en ITA2 ), que permitiría representar más de 64 códigos con un código de seis bits . En un código desplazado, algunos códigos de caracteres determinan las opciones entre los siguientes códigos de caracteres. Permite una codificación compacta, pero es menos fiable para la transmisión de datos , ya que un error en la transmisión del código desplazado normalmente hace que una parte larga de la transmisión sea ilegible. El comité de estándares decidió no utilizar el desplazamiento, por lo que ASCII requirió al menos un código de siete bits. [3] : 215 §13.6, 236 §4 

El comité consideró un código de ocho bits, ya que ocho bits ( octetos ) permitirían que dos patrones de cuatro bits codificaran eficientemente dos dígitos con decimales codificadas en binario . Sin embargo, requeriría que toda transmisión de datos enviara ocho bits cuando siete podrían ser suficientes. El comité votó por usar un código de siete bits para minimizar los costos asociados con la transmisión de datos. Dado que la cinta perforada en ese momento podía grabar ocho bits en una posición, también permitía un bit de paridad para la verificación de errores si se deseaba. [3] : 217 §c, 236 §5  Las máquinas de ocho bits (con octetos como tipo de datos nativo) que no usaban verificación de paridad generalmente establecían el octavo bit en 0. [32]

Organización interna

El código en sí fue diseñado de modo que la mayoría de los códigos de control estuvieran juntos y todos los códigos gráficos estuvieran juntos, para facilitar su identificación. Los dos primeros llamados palitos ASCII [a] [15] (32 posiciones) se reservaron para caracteres de control. [3] : 220, 236 8, 9)  El carácter "espacio" tuvo que ir antes de los gráficos para facilitar la clasificación , por lo que se convirtió en la posición 20 hexadecimal ; [3] : 237 §10  por la misma razón, muchos signos especiales comúnmente utilizados como separadores se colocaron antes de los dígitos. El comité decidió que era importante admitir alfabetos en mayúsculas de 64 caracteres , y eligió diseñar el ASCII de modo que pudiera reducirse fácilmente a un conjunto utilizable de 64 caracteres de códigos gráficos, [3] : 228, 237 §14  como se hizo en el código DEC SIXBIT (1963). Por lo tanto, las letras minúsculas no se intercalaron con las mayúsculas . Para mantener las opciones disponibles para letras minúsculas y otros gráficos, los códigos especiales y numéricos se organizaron antes de las letras, y la letra A se colocó en la posición 41 hexadecimal para que coincida con el borrador del estándar británico correspondiente. [3] : 238 §18  Los dígitos 0-9 tienen el prefijo 011, pero los 4 bits restantes corresponden a sus respectivos valores en binario, lo que hace que la conversión con decimal codificado en binario sea sencilla (por ejemplo, 5 está codificado como 011 0101 , donde 5 es 0101 en binario).

Muchos de los caracteres no alfanuméricos se posicionaron para corresponder a su posición desplazada en las máquinas de escribir; una sutileza importante es que estas se basaban en máquinas de escribir mecánicas , no eléctricas . [33] Las máquinas de escribir mecánicas siguieron el estándar de facto establecido por la Remington No. 2 (1878), la primera máquina de escribir con una tecla de mayúsculas, y los valores desplazados de 23456789-eran "#$%_&'() : las primeras máquinas de escribir omitieron 0 y 1 , usando O (letra mayúscula o ) y l (letra minúscula L ) en su lugar, pero los pares 1!y 0)se volvieron estándar una vez que 0 y 1 se volvieron comunes. Por lo tanto, en ASCII !"#$%se colocaron en la segunda barra, [a] [15] las posiciones 1-5, correspondientes a los dígitos 1-5 en la barra adyacente. [a] [15] Sin embargo, los paréntesis no podían corresponder a 9 y 0 , porque el lugar correspondiente a 0 estaba ocupado por el carácter de espacio. Esto se solucionó eliminando _el guión bajo del 6 y desplazando los caracteres restantes, lo que correspondía a muchas máquinas de escribir europeas que colocaban los paréntesis con el 8 y el 9. Esta discrepancia con las máquinas de escribir condujo a los teclados de pares de bits , en particular el Teletype Model 33 , que utilizaba la disposición desplazada a la izquierda correspondiente al ASCII, a diferencia de las máquinas de escribir mecánicas tradicionales.

Las máquinas de escribir eléctricas, en particular la IBM Selectric (1961), utilizaban una disposición algo diferente que se ha convertido en estándar de facto en las computadoras (después de la IBM PC (1981), especialmente el Modelo M (1984)) y, por lo tanto, los valores de desplazamiento de los símbolos en los teclados modernos no se corresponden tan estrechamente con la tabla ASCII como lo hacían los teclados anteriores. El /?par también data del N.º 2, y los ,< .>pares se usaban en algunos teclados (otros, incluido el N.º 2, no desplazaban ,(coma) ni .(punto) para que pudieran usarse en mayúsculas sin desviar el desplazamiento). Sin embargo, ASCII dividió el ;:par (que data del N.º 2) y reorganizó los símbolos matemáticos (convenciones variadas, comúnmente -* =+) a :* ;+ -=.

Algunos caracteres de máquina de escribir que eran comunes en ese momento no se incluyeron, en particular ½ ¼ ¢, mientras que ^ ` ~ se incluyeron como diacríticos para uso internacional y < >para uso matemático, junto con los caracteres de línea simple \ |(además de los comunes /). El símbolo @ no se usó en Europa continental y el comité esperaba que fuera reemplazado por una À acentuada en la variante francesa, por lo que la @ se colocó en la posición 40 hexadecimal , justo antes de la letra A. [3] : 243 

Los códigos de control que se consideraron esenciales para la transmisión de datos fueron el inicio del mensaje (SOM), el fin de la dirección (EOA), el fin del mensaje (EOM), el fin de la transmisión (EOT), "¿quién eres?" (WRU), "¿eres?" (RU), un control de dispositivo reservado (DC0), inactividad sincrónica (SYNC) y reconocimiento (ACK). Estos se colocaron para maximizar la distancia de Hamming entre sus patrones de bits. [3] : 243–245 

Orden de caracteres

El orden del código ASCII también se denomina orden ASCIIbético . [34] La intercalación de datos a veces se realiza en este orden en lugar del orden alfabético "estándar" ( secuencia de intercalación ). Las principales desviaciones en el orden ASCII son:

  • Todas las letras mayúsculas van antes de las minúsculas; por ejemplo, "Z" precede a "a"
  • Los dígitos y muchos signos de puntuación vienen antes de las letras.

Una orden intermedia convierte letras mayúsculas en minúsculas antes de comparar los valores ASCII.

Conjunto de caracteres

ASCII (1977/1986)
0123456789ABdoDmiF
0x Nulo SOL Tx ETX ETE ENQ Acuse de recibo BEL  Licenciatura en Ciencias   alta   Si   Vermont   FF   ES   ENTONCES   SI 
1x DLE DC1 DC2 DC3 DC4 No se puede SINÓNIMO ETB PODER  En  SUB ESC  Es   GS   R.R.   A NOSOTROS 
2x  ES  !"#$%&'()*+,-./
3x0123456789:;<=>?
4x@ABdoDmiFGRAMOyoIYoKyoMETROnorteOh
5xPAGQRSyoVYoincógnitaYO[\]^_
6x`abdodmiFgramoyoiyoayometronorteo
7xpagqasaenelincógnitayel{|}~ DEL
  Cambiado o añadido en la versión de 1963
  Cambiado tanto en la versión de 1963 como en el borrador de 1965

Grupos de personajes

Personajes de control

Símbolos antiguos asignados a los 32 caracteres de control, espacio y borrado. ( ISO 2047 , MIL-STD-188-100, 1972)

ASCII reserva los primeros 32 puntos de código (números decimales 0–31) y el último (número decimal 127) para caracteres de control . Se trata de códigos destinados a controlar dispositivos periféricos (como impresoras ), o a proporcionar metainformación sobre flujos de datos, como los almacenados en cintas magnéticas. A pesar de su nombre, estos puntos de código no representan caracteres imprimibles (es decir, no son caracteres en absoluto, sino señales). Para fines de depuración, se les asignan símbolos "de marcador de posición" (como los que se dan en ISO 2047 y sus predecesores).

Por ejemplo, el carácter 0x0A representa la función de "avance de línea" (que hace que una impresora avance su papel), y el carácter 8 representa " retroceso ". RFC  2822 se refiere a los caracteres de control que no incluyen retorno de carro, avance de línea o espacio en blanco como caracteres de control que no son espacios en blanco. [35] A excepción de los caracteres de control que prescriben un formato orientado a líneas elemental, ASCII no define ningún mecanismo para describir la estructura o apariencia del texto dentro de un documento. Otros esquemas, como los lenguajes de marcado , la página de direcciones y el diseño y formato de documentos.

El estándar ASCII original utilizaba únicamente frases descriptivas breves para cada carácter de control. La ambigüedad que esto causaba era a veces intencional, por ejemplo, cuando un carácter se utilizaba de forma ligeramente diferente en un enlace de terminal que en un flujo de datos , y a veces accidental, por ejemplo, el estándar no es claro sobre el significado de "borrar".

Probablemente el dispositivo individual más influyente que afectó la interpretación de estos caracteres fue el Teletype Model 33 ASR, que era un terminal de impresión con una opción de lector/perforador de cinta de papel disponible . La cinta de papel fue un medio muy popular para el almacenamiento de programas a largo plazo hasta la década de 1980, menos costoso y en algunos aspectos menos frágil que la cinta magnética. En particular, las asignaciones de la máquina Teletype Model 33 para los códigos 17 (control-Q, DC1, también conocido como XON), 19 (control-S, DC3, también conocido como XOFF) y 127 ( delete ) se convirtieron en estándares de facto . El Model 33 también fue notable por tomar la descripción de control-G (código 7, BEL, que significa alertar audiblemente al operador) literalmente, ya que la unidad contenía una campana real que sonaba cuando recibía un carácter BEL. Debido a que la parte superior de la tecla O también mostraba un símbolo de flecha hacia la izquierda (de ASCII-1963, que tenía este carácter en lugar de un guión bajo ), muchos de los primeros sistemas de tiempo compartido también adoptaron un uso no compatible del código 15 (control-O, shift in) interpretado como "borrar carácter anterior", pero con el tiempo quedó desatendido.

Cuando un Teletype 33 ASR equipado con el lector automático de cinta de papel recibía un control S (XOFF, una abreviatura de transmisión desactivada), hacía que el lector de cinta se detuviera; al recibir un control Q (XON, transmisión activada), hacía que el lector de cinta se reanudara. Esta técnica, denominada control de flujo , fue adoptada por varios de los primeros sistemas operativos de computadoras como una señal de "apretón de manos" que advertía al remitente que detuviera la transmisión debido a un desbordamiento de búfer inminente ; persiste hasta el día de hoy en muchos sistemas como una técnica de control de salida manual. En algunos sistemas, el control S conserva su significado, pero el control Q se reemplaza por un segundo control S para reanudar la salida.

El 33 ASR también podría configurarse para emplear control-R (DC2) y control-T (DC4) para iniciar y detener la perforación de la cinta; en algunas unidades equipadas con esta función, las letras del carácter de control correspondiente en la tecla sobre la letra eran TAPE y TAPE respectivamente. [36]

Eliminar vs retroceso

El teletipo no podía mover su cabezal de escritura hacia atrás, por lo que no tenía una tecla en su teclado para enviar un BS (retroceso). En su lugar, había una tecla marcada RUB OUTque enviaba el código 127 (DEL). El propósito de esta tecla era borrar errores en una cinta de papel ingresada manualmente: el operador tenía que presionar un botón en el perforador de cinta para retrocederla, luego escribir el borrado, que perforaba todos los agujeros y reemplazaba el error con un carácter que se pretendía ignorar. [37] Los teletipos se usaban comúnmente con las computadoras menos costosas de Digital Equipment Corporation (DEC); estos sistemas tenían que usar las teclas que estaban disponibles y, por lo tanto, el carácter DEL se asignaba para borrar el carácter anterior. [38] [39] Debido a esto, los terminales de video DEC (por defecto) enviaban el carácter DEL para la tecla marcada "Retroceso" mientras que la tecla separada marcada "Borrar" enviaba una secuencia de escape ; muchos otros terminales de la competencia enviaban un carácter BS para la tecla de retroceso.

Los primeros controladores tty de Unix, a diferencia de algunas implementaciones modernas, permitían que sólo se estableciera un carácter para borrar el carácter anterior en el procesamiento de entrada canónico (donde está disponible un editor de línea muy simple); esto podía establecerse en BS o DEL, pero no ambos, lo que resultaba en situaciones recurrentes de ambigüedad donde los usuarios tenían que decidir dependiendo de qué terminal estaban usando ( los shells que permiten la edición de línea, como ksh , bash y zsh , entienden ambos). La suposición de que ninguna tecla enviaba un carácter BS permitió que Ctrl+H se usara para otros fines, como el comando de prefijo "ayuda" en GNU Emacs . [40]

Escapar

A muchos otros caracteres de control se les han asignado significados muy diferentes de los originales. El carácter de "escape" (ESC, código 27), por ejemplo, fue pensado originalmente para permitir el envío de otros caracteres de control como literales en lugar de invocar su significado, una "secuencia de escape". Este es el mismo significado de "escape" que encontramos en codificaciones de URL, cadenas de lenguaje C y otros sistemas donde ciertos caracteres tienen un significado reservado. Con el tiempo, esta interpretación ha sido adoptada y finalmente modificada.

En el uso moderno, un ESC enviado a la terminal generalmente indica el inicio de una secuencia de comandos, que se puede utilizar para direccionar el cursor, desplazarse por una región, establecer/consultar varias propiedades de la terminal y más. Por lo general, tienen la forma de un llamado " código de escape ANSI " (que a menudo comienza con un " Introductor de secuencia de control ", "CSI", " ESC [ ") de ECMA-48 (1972) y sus sucesores. Algunas secuencias de escape no tienen introductores, como el comando de reinicio completo del VT100 " ESC c ". [41]

Por el contrario, una lectura ESC desde la terminal se utiliza con mayor frecuencia como un carácter fuera de banda que se utiliza para finalizar una operación o un modo especial, como en los editores de texto TECO y vi . En los sistemas de ventanas e interfaces gráficas de usuario (GUI) , ESC generalmente hace que una aplicación cancele su operación actual o salga (termine) por completo.

Fin de linea

La ambigüedad inherente de muchos caracteres de control, combinada con su uso histórico, creó problemas al transferir archivos de "texto simple" entre sistemas. El mejor ejemplo de esto es el problema de la nueva línea en varios sistemas operativos . Las máquinas de teletipo requerían que una línea de texto terminara con un "retorno de carro" (que mueve el cabezal de impresión al principio de la línea) y un "avance de línea" (que avanza el papel una línea sin mover el cabezal de impresión). El nombre "retorno de carro" proviene del hecho de que en una máquina de escribir manual el carro que sostiene el papel se mueve mientras que las barras de tipos que golpean la cinta permanecen estacionarias. Todo el carro tenía que ser empujado (regresado) hacia la derecha para colocar el papel para la siguiente línea.

Los sistemas operativos DEC ( OS/8 , RT-11 , RSX-11 , RSTS , TOPS-10 , etc.) utilizaban ambos caracteres para marcar el final de una línea de modo que el dispositivo de consola (originalmente máquinas de teletipo) pudiera funcionar. Cuando aparecieron los llamados "TTY de cristal" (posteriormente llamados CRT o "terminales tontos"), la convención estaba tan bien establecida que la compatibilidad con versiones anteriores hizo necesario seguirla. Cuando Gary Kildall creó CP/M , se inspiró en algunas de las convenciones de interfaz de línea de comandos utilizadas en el sistema operativo RT-11 de DEC.

Hasta la introducción del PC DOS en 1981, IBM no tuvo influencia en esto porque sus sistemas operativos de los años 70 usaban codificación EBCDIC en lugar de ASCII, y estaban orientados a la entrada de tarjetas perforadas y la salida de impresora de línea en las que el concepto de "retorno de carro" no tenía sentido. El PC DOS de IBM (también comercializado como MS-DOS por Microsoft) heredó la convención en virtud de estar vagamente basado en CP/M, [42] y Windows a su vez la heredó de MS-DOS.

Requerir dos caracteres para marcar el final de una línea introduce una complejidad y ambigüedad innecesarias en cuanto a cómo interpretar cada carácter cuando se encuentra solo. Para simplificar las cosas, los flujos de datos de texto sin formato , incluidos los archivos, en Multics usaban solo el salto de línea (LF) como terminador de línea. [43] : 357  El controlador tty manejaría la conversión de LF a CRLF en la salida para que los archivos se puedan imprimir directamente en la terminal, y NL (nueva línea) se usa a menudo para hacer referencia a CRLF en documentos UNIX . Los sistemas Unix y similares a Unix , y los sistemas Amiga , adoptaron esta convención de Multics. Por otro lado, el Macintosh OS original , Apple DOS y ProDOS usaban solo el retorno de carro (CR) como terminador de línea; sin embargo, dado que Apple luego reemplazó estos sistemas operativos obsoletos con su sistema operativo macOS (anteriormente llamado OS X) basado en Unix , ahora también usan el salto de línea (LF). El Radio Shack TRS-80 también usó un CR solitario para terminar líneas.

Las computadoras conectadas a ARPANET incluían máquinas que ejecutaban sistemas operativos como TOPS-10 y TENEX que utilizaban terminaciones de línea CR-LF; máquinas que ejecutaban sistemas operativos como Multics que utilizaban terminaciones de línea LF; y máquinas que ejecutaban sistemas operativos como OS/360 que representaban las líneas como un recuento de caracteres seguido de los caracteres de la línea y que utilizaban codificación EBCDIC en lugar de ASCII. El protocolo Telnet definía una "Terminal Virtual de Red" (NVT) ASCII, de modo que las conexiones entre hosts con diferentes convenciones de final de línea y conjuntos de caracteres pudieran ser compatibles mediante la transmisión de un formato de texto estándar a través de la red. Telnet utilizaba ASCII junto con terminaciones de línea CR-LF, y el software que utilizaba otras convenciones traduciría entre las convenciones locales y la NVT. [44] El Protocolo de Transferencia de Archivos adoptó el protocolo Telnet, incluido el uso de la Terminal Virtual de Red, para su uso al transmitir comandos y transferir datos en el modo ASCII predeterminado. [45] [46] Esto agrega complejidad a las implementaciones de esos protocolos y a otros protocolos de red, como los utilizados para el correo electrónico y la World Wide Web, en sistemas que no utilizan la convención de final de línea CR-LF de NVT. [47] [48]

Fin del archivo/secuencia

El monitor PDP-6, [38] y su sucesor PDP-10 TOPS-10, [39] usaban control-Z (SUB) como una indicación de fin de archivo para la entrada desde un terminal. Algunos sistemas operativos como CP/M rastreaban la longitud del archivo solo en unidades de bloques de disco y usaban control-Z para marcar el final del texto real en el archivo. [49] Por estas razones, EOF, o fin de archivo , se usaba coloquial y convencionalmente como un acrónimo de tres letras para control-Z en lugar de SUBstitute. El carácter de fin de texto ( ETX ), también conocido como control-C , era inadecuado por una variedad de razones, mientras que usar control-Z como el carácter de control para finalizar un archivo es análogo a la posición de la letra Z al final del alfabeto y sirve como una ayuda mnemotécnica muy conveniente . Una convención históricamente común y aún prevaleciente usa la convención de caracteres ETX para interrumpir y detener un programa a través de un flujo de datos de entrada, generalmente desde un teclado.

El controlador de terminal Unix utiliza el carácter de fin de transmisión ( EOT ), también conocido como control-D, para indicar el final de un flujo de datos.

En el lenguaje de programación C , y en las convenciones de Unix, el carácter nulo se utiliza para terminar cadenas de texto ; dichas cadenas terminadas en nulo se pueden conocer en forma abreviada como ASCIZ o ASCIIZ, donde aquí Z representa "cero".

Cuadro de códigos de control

BinarioOctDicMaleficioAbreviaturaImágenes de control Unicode [b]Notación de cursor [c]Secuencia de escape C [d]Nombre (1967)
196319651967
000 0000000000NULONulo^@\0 [o]Nulo
000 0001001101SOMASOL^AInicio del encabezado
000 0010002202EOATx^BInicio del texto
000 0011003303MOEETX^CFin del texto
000 0100004404ETE^DFin de la transmisión
000 0101005505Unión SoviéticaENQ^EConsulta
000 0110006606ESAcuse de recibo^FReconocimiento
000 0111007707CAMPANABEL^G\aCampana
000 1000010808FE0Licenciatura en Ciencias^H\bRetroceso [f] [g]
000 1001011909HT/SKalta^yo\tPestaña horizontal [h]
000 1010012100ASi^J\norteAvance de línea
000 1011013110BVTABVermont^K\vPestaña vertical
000 1100014120 °CFF^L\FFeed de formulario
000 1101015130DES^M\rRetorno de carro [i]
000 1110016140EENTONCES^NCambiar de lugar
000 1111017150FSI^OCambio de entrada
001 00000201610DC0DLE^PEscape de enlace de datos
001 00010211711DC1^QControl de dispositivo 1 (a menudo XON )
001 00100221812DC2^RControl de dispositivo 2
001 00110231913DC3^SControl de dispositivo 3 (a menudo XOFF )
001 01000242014DC4^TControl de dispositivo 4
001 01010252115ERRARNo se puede^TúReconocimiento negativo
001 01100262216SINCRONIZACIÓNSINÓNIMO^VRalentí sincrónico
001 01110272317LEMETB^WFin del bloque de transmisión
001 10000302418Asi quePODER^XCancelar
001 10010312519S1En^YFin del medio
001 1010032261AS2EspartanoSUB^ZSustituto
001 1011033271BS3ESC^[\e [j]Escapar [k]
001 1100034281CS4Es^\Separador de archivos
001 1101035291DS5GS^]Separador de grupo
001 1110036301ES6R.R.^^ [l]Separador de registros
001 1111037311ºFS7A NOSOTROS^_Separador de unidades
111 11111771277FDEL^?Eliminar [m] [g]

Los equipos especializados podrían utilizar otras representaciones, por ejemplo, gráficos ISO 2047 o números hexadecimales .

Personajes imprimibles

Los códigos 20 hexadecimales a 7E hexadecimales , conocidos como caracteres imprimibles, representan letras, dígitos, signos de puntuación y algunos símbolos diversos. Hay 95 caracteres imprimibles en total. [n]

El código 20 hexadecimal , el carácter "espacio", denota el espacio entre palabras, tal como lo produce la barra espaciadora de un teclado. Dado que el carácter de espacio se considera un gráfico invisible (en lugar de un carácter de control) [3] : 223  [10], se incluye en la tabla siguiente en lugar de en la sección anterior.

El código 7F hexadecimal corresponde al carácter de control "borrar" (DEL) no imprimible y, por lo tanto, se omite en este cuadro; se trata en el cuadro de la sección anterior. Las versiones anteriores de ASCII usaban la flecha hacia arriba en lugar del signo de intercalación (5E hexadecimal ) y la flecha hacia la izquierda en lugar del guión bajo (5F hexadecimal ). [6] [50]

BinarioOctDicMaleficioGlifo
196319651967
010 00000403220 espacio
010 00010413321!
010 00100423422"
010 00110433523#
010 01000443624$
010 01010453725%
010 01100463826&
010 01110473927'
010 10000504028(
010 10010514129)
010 1010052422A*
010 1011053432B+
010 1100054442C,
010 1101055452D-
010 1110056462E.
010 1111057472º piso/
011 000006048300
011 000106149311
011 001006250322
011 001106351333
011 010006452344
011 010106553355
011 011006654366
011 011106755377
011 100007056388
011 100107157399
011 1010072583A:
011 1011073593B;
011 1100074603C<
011 1101075613D=
011 1110076623E>
011 1111077633º grado?
100 00001006440@`@
100 00011016541A
100 00101026642B
100 00111036743do
100 01001046844D
100 01011056945mi
100 01101067046F
100 01111077147GRAMO
100 10001107248yo
100 10011117349I
100 1010112744AYo
100 1011113754BK
100 1100114764Cyo
100 1101115774DMETRO
100 1110116784Enorte
100 1111117794º pisoOh
101 00001208050PAG
101 00011218151Q
101 00101228252R
101 00111238353S
101 01001248454yo
101 01011258555
101 01101268656V
101 01111278757Yo
101 10001308858incógnita
101 10011318959Y
101 1010132905AO
101 1011133915B[
101 1100134925C\~\
101 1101135935D]
101 1110136945E^
101 1111137955F_
110 00001409660@`
110 00011419761a
110 00101429862b
110 00111439963do
110 010014410064d
110 010114510165mi
110 011014610266F
110 011114710367gramo
110 100015010468yo
110 100115110569i
110 10101521066Ayo
110 10111531076Ba
110 11001541086Cyo
110 11011551096Dmetro
110 11101561106Enorte
110 11111571116Fo
111 000016011270pag
111 000116111371q
111 001016211472a
111 001116311573s
111 010016411674a
111 010116511775
111 011016611876en
111 011116711977el
111 100017012078incógnita
111 100117112179y
111 10101721227Ael
111 10111731237B{
111 11001741247CAcuse de recibo¬|
111 11011751257D}
111 11101761267EESC|~

Uso

El código ASCII se utilizó por primera vez comercialmente en 1963 como un código de teleimpresora de siete bits para la red TWX (TeletypeWriter eXchange) de la American Telephone & Telegraph . TWX originalmente utilizaba el código ITA2 de cinco bits , que también utilizaba el sistema de teleimpresora Telex de la competencia. Bob Bemer introdujo características como la secuencia de escape . [5] Su colega británico Hugh McGregor Ross ayudó a popularizar este trabajo; según Bemer, "tanto que el código que se convertiría en ASCII se llamó primero Código Bemer-Ross en Europa". [51] Debido a su extenso trabajo sobre ASCII, Bemer ha sido llamado "el padre de ASCII". [52]

El 11 de marzo de 1968, el presidente de los Estados Unidos, Lyndon B. Johnson, ordenó que todas las computadoras adquiridas por el gobierno federal de los Estados Unidos admitieran ASCII, declarando: [53] [54] [55]

También he aprobado las recomendaciones del Secretario de Comercio [ Luther H. Hodges ] sobre las normas para registrar el Código Estándar para el Intercambio de Información en cintas magnéticas y cintas de papel cuando se utilicen en operaciones informáticas. Todas las computadoras y configuraciones de equipos relacionados que se incorporen al inventario del Gobierno Federal a partir del 1 de julio de 1969 deben tener la capacidad de utilizar el Código Estándar para el Intercambio de Información y los formatos prescritos por las normas de cintas magnéticas y cintas de papel cuando se utilicen estos medios.

ASCII fue la codificación de caracteres más común en la World Wide Web hasta diciembre de 2007, cuando la codificación UTF-8 la superó; UTF-8 es compatible con versiones anteriores de ASCII. [56] [57] [58]

Variantes y derivaciones

A medida que la tecnología informática se fue extendiendo por el mundo, diferentes organismos de normalización y corporaciones desarrollaron muchas variantes del código ASCII para facilitar la expresión de idiomas distintos del inglés que utilizaban alfabetos basados ​​en el alfabeto romano. Se podrían clasificar algunas de estas variantes como " extensiones ASCII ", aunque algunos usan incorrectamente ese término para representar todas las variantes, incluidas aquellas que no conservan el mapa de caracteres ASCII en el rango de 7 bits. Además, las extensiones ASCII también han sido etiquetadas incorrectamente como ASCII.

Códigos de 7 bits

Desde el comienzo de su desarrollo, [59] ASCII fue concebido para ser sólo una de varias variantes nacionales de un estándar de código de caracteres internacional.

Otros organismos de normalización internacionales han ratificado codificaciones de caracteres como la ISO 646 (1967) que son idénticas o casi idénticas a ASCII, con extensiones para caracteres fuera del alfabeto inglés y símbolos utilizados fuera de los Estados Unidos, como el símbolo de la libra esterlina del Reino Unido (£); por ejemplo, con la página de códigos 1104. Casi todos los países necesitaban una versión adaptada de ASCII, ya que ASCII se adaptaba a las necesidades de solo los EE. UU. y algunos otros países. Por ejemplo, Canadá tenía su propia versión que admitía caracteres franceses.

Muchos otros países desarrollaron variantes del ASCII para incluir letras no inglesas (por ejemplo, é , ñ , ß , Ł ), símbolos monetarios (por ejemplo, £ , ¥ ), etc. Véase también YUSCII (Yugoslavia).

Compartiría la mayoría de los caracteres en común, pero asignaría otros caracteres útiles a nivel local a varios puntos de código reservados para "uso nacional". Sin embargo, los cuatro años que transcurrieron entre la publicación de ASCII-1963 y la primera aceptación por parte de la ISO de una recomendación internacional durante 1967 [60] hicieron que las opciones de ASCII para los caracteres de uso nacional parecieran ser estándares de facto para el mundo, lo que causó confusión e incompatibilidad una vez que otros países comenzaron a hacer sus propias asignaciones a estos puntos de código.

La norma ISO/IEC 646, al igual que el ASCII, es un conjunto de caracteres de 7 bits. No ofrece códigos adicionales, por lo que los mismos puntos de código codifican caracteres diferentes en distintos países. Se definieron códigos de escape para indicar qué variante nacional se aplicaba a un fragmento de texto, pero rara vez se utilizaban, por lo que a menudo era imposible saber con qué variante trabajar y, por lo tanto, qué carácter representaba un código y, en general, los sistemas de procesamiento de textos solo podían manejar una variante de todos modos.

Debido a que los caracteres de corchetes y llaves de ASCII se asignaron a puntos de código de "uso nacional" que se usaban para letras acentuadas en otras variantes nacionales de ISO/IEC 646, un programador alemán, francés o sueco, etc. que usara su variante nacional de ISO/IEC 646, en lugar de ASCII, tenía que escribir, y por lo tanto leer, algo como

ä aÄiÜ = 'Ön'; ü

en lugar de

{ a[i] = '\n'; }

Los trígrafos C se crearon para resolver este problema en el ANSI C , aunque su introducción tardía y su implementación inconsistente en los compiladores limitaron su uso. Muchos programadores mantenían sus computadoras en ASCII, por lo que el texto simple en sueco, alemán, etc. (por ejemplo, en el correo electrónico o Usenet ) contenía "{, }" y variantes similares en medio de las palabras, algo a lo que esos programadores se acostumbraron. Por ejemplo, un programador sueco que le escribiera a otro programador preguntándole si deberían ir a almorzar, podría recibir "N{ jag har sm|rg}sar" como respuesta, que debería ser "Nä jag har smörgåsar", que significa "No, tengo sándwiches".

En Japón y Corea, a partir de la década de 2020, [actualizar]se utiliza una variación del código ASCII en la que la barra invertida (hexadecimal 5C) se representa como ¥ (un símbolo de yen en Japón) o ₩ (un símbolo de won en Corea). Esto significa que, por ejemplo, la ruta de archivo C:\Users\Smith se muestra como C:¥Users¥Smith (en Japón) o C:₩Users₩Smith (en Corea).

En Europa, los conjuntos de caracteres de teletexto , que son variantes de ASCII, se utilizan para los subtítulos de transmisión de televisión, definidos por World System Teletext y transmitidos utilizando el estándar DVB-TXT para integrar teletexto en transmisiones DVB. [61] En el caso de que los subtítulos se hayan creado inicialmente para teletexto y se hayan convertido, los formatos de subtítulos derivados están restringidos a los mismos conjuntos de caracteres.

Códigos de 8 bits

Con el tiempo, a medida que las computadoras de 8, 16 y 32 bits (y más tarde, de 64 bits ) comenzaron a reemplazar a las computadoras de 12 , 18 y 36 bits como norma, se volvió común usar un byte de 8 bits para almacenar cada carácter en la memoria, lo que brindó la oportunidad de desarrollar parientes extendidos de 8 bits de ASCII. En la mayoría de los casos, estos se desarrollaron como verdaderas extensiones de ASCII, dejando intacta la asignación de caracteres original, pero agregando definiciones de caracteres adicionales después de los primeros 128 caracteres (es decir, 7 bits). ASCII en sí siguió siendo un código de siete bits: el término "ASCII extendido" no tiene estatus oficial.

En algunos países se desarrollaron extensiones de 8 bits del ASCII que incluían compatibilidad con caracteres utilizados en los idiomas locales; por ejemplo, ISCII para la India y VISCII para Vietnam. Las computadoras Kaypro CP/M utilizaban los 128 caracteres "superiores" del alfabeto griego. [ cita requerida ]

Incluso para los mercados en los que no era necesario añadir muchos caracteres para admitir idiomas adicionales, los fabricantes de los primeros sistemas informáticos domésticos solían desarrollar sus propias extensiones de 8 bits de ASCII para incluir caracteres adicionales, como caracteres de dibujo de cajas , semigráficos y sprites de videojuegos . A menudo, estas adiciones también reemplazaban caracteres de control (índice 0 a 31, así como índice 127) con extensiones aún más específicas de la plataforma. En otros casos, el bit adicional se utilizaba para algún otro propósito, como alternar el vídeo inverso ; este enfoque fue utilizado por ATASCII , una extensión de ASCII desarrollada por Atari .

La mayoría de las extensiones ASCII se basan en ASCII-1967 (el estándar actual), pero algunas extensiones se basan en el anterior ASCII-1963. Por ejemplo, PETSCII , que fue desarrollado por Commodore International para sus sistemas de 8 bits , se basa en ASCII-1963. Asimismo, muchos conjuntos de caracteres Sharp MZ se basan en ASCII-1963.

IBM definió la página de códigos 437 para el IBM PC , reemplazando los caracteres de control con símbolos gráficos como caras sonrientes y asignando caracteres gráficos adicionales a las 128 posiciones superiores. [62] Digital Equipment Corporation desarrolló el Conjunto de caracteres multinacionales (DEC-MCS) para su uso en el popular terminal VT220 como una de las primeras extensiones diseñadas más para idiomas internacionales que para gráficos de bloques. Apple definió Mac OS Roman para Macintosh y Adobe definió la codificación estándar PostScript para PostScript ; ambos conjuntos contenían letras "internacionales", símbolos tipográficos y signos de puntuación en lugar de gráficos, más como conjuntos de caracteres modernos.

El estándar ISO/IEC 8859 (derivado del DEC-MCS) proporcionó un estándar que la mayoría de los sistemas copiaron (o al menos se basaron en él, cuando no lo copiaron exactamente). Una extensión popular adicional diseñada por Microsoft, Windows-1252 (a menudo etiquetada erróneamente como ISO-8859-1 ), agregó los signos de puntuación tipográficos necesarios para la impresión de texto tradicional. ISO-8859-1, Windows-1252 y el ASCII original de 7 bits fueron los métodos de codificación de caracteres más comunes en la World Wide Web hasta 2008, cuando UTF-8 los superó. [57]

La norma ISO/IEC 4873 introdujo 32 códigos de control adicionales definidos en el rango hexadecimal 80–9F , como parte de la extensión de la codificación ASCII de 7 bits para convertirse en un sistema de 8 bits. [63]

Unicode

Unicode y el conjunto de caracteres universales (UCS) ISO/IEC 10646 tienen una gama mucho más amplia de caracteres y sus diversas formas de codificación han comenzado a suplantar rápidamente a ISO/IEC 8859 y ASCII en muchos entornos. Mientras que ASCII está limitado a 128 caracteres, Unicode y el UCS admiten más caracteres al separar los conceptos de identificación única (utilizando números naturales llamados puntos de código ) y codificación (en formatos binarios de 8, 16 o 32 bits, llamados UTF-8 , UTF-16 y UTF-32 , respectivamente).

El ASCII se incorporó al conjunto de caracteres Unicode (1991) como los primeros 128 símbolos, por lo que los caracteres ASCII de 7 bits tienen los mismos códigos numéricos en ambos conjuntos. Esto permite que UTF-8 sea compatible con versiones anteriores del ASCII de 7 bits, ya que un archivo UTF-8 que contiene solo caracteres ASCII es idéntico a un archivo ASCII que contiene la misma secuencia de caracteres. Aún más importante, se garantiza la compatibilidad con versiones posteriores , ya que el software que reconoce solo caracteres ASCII de 7 bits como especiales y no altera los bytes con el bit más alto establecido (como se hace a menudo para admitir extensiones ASCII de 8 bits como ISO-8859-1) conservará los datos UTF-8 sin cambios. [64]

Véase también

Notas

  1. ^ abcde Los 128 caracteres del conjunto de caracteres ASCII de 7 bits se dividen en ocho grupos de 16 caracteres llamados palos 0–7, asociados con los tres bits más significativos . [15] Dependiendo de la representación horizontal o vertical del mapa de caracteres, los palos pueden corresponder con filas o columnas de la tabla.
  2. ^ Los caracteres Unicode del área "Imágenes de control" U+2400 a U+2421 se reservan para representar caracteres de control cuando es necesario imprimirlos o mostrarlos en lugar de que cumplan su función prevista. Es posible que algunos navegadores no los muestren correctamente.
  3. ^ La notación de cursor se utiliza a menudo para representar caracteres de control en una terminal. En la mayoría de las terminales de texto, si se mantiene pulsada la tecla mientras se escribe el segundo carácter, se escribirá el carácter de control. A veces no se necesita la tecla Shift; por ejemplo, puede escribirse con solo Ctrl+2 o Ctrl+Espacio.Ctrl^@
  4. ^ Secuencias de escape de caracteres en el lenguaje de programación C y muchos otros lenguajes influenciados por él, como Java y Perl (aunque no todas las implementaciones admiten necesariamente todas las secuencias de escape).
  5. ^ Se puede ingresar cualquier carácter de un solo byte si se escapa su valor octal. Sin embargo, debido a la función de NULL en cadenas C , este caso se usa de manera particular.
  6. ^ El carácter de retroceso también se puede ingresar presionando la tecla en algunos sistemas.← Backspace
  7. ^ ab La ambigüedad de la tecla Retroceso se debe a que los primeros terminales diseñados asumían que el uso principal del teclado sería perforar manualmente la cinta de papel mientras no se estaba conectado a una computadora. Para eliminar el carácter anterior, uno tenía que retroceder la perforación de la cinta de papel, que por razones mecánicas y de simplicidad era un botón en la perforadora misma y no en el teclado, y luego escribir el carácter de borrado. Por lo tanto, colocaron una tecla que producía borrado en la ubicación utilizada en las máquinas de escribir para el retroceso. Cuando los sistemas usaban estos terminales y proporcionaban edición de línea de comandos, tenían que usar el código "rubout" para realizar un retroceso, y a menudo no interpretaban el carácter de retroceso (podían hacer eco de " ^ H " para el retroceso). Otros terminales no diseñados para cinta de papel hacían que la tecla en esta ubicación produjera Retroceso, y los sistemas diseñados para estos usaban ese carácter para retroceder. Dado que el código de borrado a menudo producía un efecto de retroceso, esto también forzó a los fabricantes de terminales a hacer que cualquier tecla produjera algo diferente al carácter de Borrar.Delete
  8. ^ El carácter de tabulación también se puede ingresar presionando la tecla en la mayoría de los sistemas.Tab ↹
  9. ^ El carácter de retorno de carro también se puede ingresar presionando la tecla o en la mayoría de los sistemas.↵ EnterReturn
  10. ^ La secuencia de escape \e no forma parte de las especificaciones ISO C ni de muchos otros lenguajes. Sin embargo, varios compiladores, incluido GCC , la entienden .
  11. ^ El carácter Escape también se puede ingresar presionando la tecla en algunos sistemas.Esc
  12. ^ ^^ significa + (presionando las teclas "Ctrl" y cursor ).Ctrl^
  13. ^ El carácter Eliminar a veces se puede ingresar presionando la tecla en algunos sistemas.← Backspace
  14. ^ Impresos, los caracteres son:
     !"#$%&'()*+,-./0123456789:;<=>?​@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_​`abcdefghijklmnopqrstuvwxyz{|}~

Referencias

  1. ^ ANSI (1 de diciembre de 1975). ISO-IR-6: Juego de caracteres gráficos ASCII (PDF) . ITSCJ/ IPSJ .
  2. ^ ab "Conjuntos de caracteres". Autoridad de Números Asignados en Internet (IANA) . 2007-05-14 . Consultado el 2019-08-25 .
  3. ^ abcdefghijklmnopqrs Mackenzie, Charles E. (1980). Conjuntos de caracteres codificados, historia y desarrollo (PDF) . Serie de programación de sistemas (1.ª edición). Addison-Wesley Publishing Company, Inc. págs. 6, 66, 211, 215, 217, 220, 223, 228, 236–238, 243–245, 247–253, 423, 425–428, 435–439. ISBN 978-0-201-14460-4. LCCN  77-90165. Archivado (PDF) del original el 26 de mayo de 2016. Consultado el 25 de agosto de 2019 .
  4. ^ "Propuesta de hito: hito ASCII - Sección costera de la IEEE NJ". Wiki de hitos de la IEEE . 29 de marzo de 2016. Consultado el 26 de febrero de 2024 .
  5. ^ ab Brandel, Mary (6 de julio de 1999). «1963: El debut de ASCII». CNN . Archivado desde el original el 17 de junio de 2013. Consultado el 14 de abril de 2008 .
  6. ^ abcd "Código estándar estadounidense para el intercambio de información, ASA X3.4-1963". Sensitive Research . Asociación Estadounidense de Normas . 1963-06-17 . Consultado el 2020-06-06 .
  7. ^ abc Código estándar de EE. UU. para el intercambio de información, USAS X3.4-1967 (informe técnico). Instituto de Normas de los Estados Unidos de América . 1967-07-07.
  8. ^ Jennings, Thomas Daniel (20 de abril de 2016) [1999]. "Una historia anotada de algunos códigos de caracteres o ASCII: Código estándar americano para la infiltración de información". Sensitive Research (SR-IX) . Consultado el 8 de marzo de 2020 .
  9. ^ abcd Estándar nacional estadounidense para sistemas de información: conjuntos de caracteres codificados: código estándar nacional estadounidense de 7 bits para el intercambio de información (ASCII de 7 bits), ANSI X3.4-1986 (informe técnico). Instituto Nacional Estadounidense de Estándares (ANSI). 26 de marzo de 1986.
  10. ^ ab Cerf, Vint (1969-10-16). Formato ASCII para intercambio de redes. Grupo de trabajo de redes. doi : 10.17487/RFC0020 . RFC 20 . Consultado el 13 de junio de 2016 .(NB. Redacción casi idéntica a USAS X3.4-1968 excepto la introducción).
  11. ^ Barry Leiba (12 de enero de 2015). "Clasificación correcta de RFC 20 (formato ASCII) según el estándar de Internet". IETF .
  12. ^ Shirley, R. (agosto de 2007). Glosario de seguridad en Internet, versión 2. doi : 10.17487/RFC4949 . RFC 4949. Consultado el 13 de junio de 2016 .
  13. ^ Maini, Anil Kumar (2007). Electrónica digital: principios, dispositivos y aplicaciones. John Wiley and Sons . pág. 28. ISBN 978-0-470-03214-5Además, define códigos para 33 caracteres de control no imprimibles, en su mayoría obsoletos, que afectan el modo en que se procesa el texto .
  14. Bukstein, Ed (julio de 1964). «Códigos informáticos binarios y ASCII». Electronics World . 72 (1): 28–29. Archivado desde el original el 3 de marzo de 2016 . Consultado el 22 de mayo de 2016 .
  15. ^ abcdef Bemer, Robert William (1980). "Capítulo 1: ASCII por dentro" (PDF) . Software de propósito general . Lo mejor de Interface Age. Vol. 2. Portland, OR, EE. UU.: dilithium Press. págs. 1–50. ISBN 978-0-918398-37-6. LCCN  79-67462. Archivado desde el original el 27 de agosto de 2016. Consultado el 27 de agosto de 2016 .de:
  16. ^ Breve informe: Reunión del Grupo de trabajo del CCITT sobre el nuevo alfabeto telegráfico, 13-15 de mayo de 1963.
  17. ^ Informe de ISO/TC/97/SC 2 – Reunión del 29 al 31 de octubre de 1963.
  18. ^ Informe del Grupo de Trabajo X3.2.4, 11 de junio de 1963, Edificio del Pentágono, Washington, DC.
  19. ^ Informe de la reunión núm. 8, Grupo de trabajo X3.2.4, 17 y 18 de diciembre de 1963
  20. ^ abc Winter, Dik T. (2010) [2003]. "Estándares estadounidenses e internacionales: ASCII". Archivado desde el original el 16 de enero de 2010.
  21. ^ ab Código estándar de EE. UU. para el intercambio de información, USAS X3.4-1968 (informe técnico). Instituto de Normas de los Estados Unidos de América . 1968-10-10.
  22. ^ abcdefg Salste, Tuomas (enero de 2016). «Conjuntos de caracteres de 7 bits: revisiones de ASCII». Aivosto Oy. urn : nbn:fi-fe201201011004. Archivado desde el original el 13 de junio de 2016. Consultado el 13 de junio de 2016 .
  23. ^ "Información". Scientific American (edición especial). 215 (3). Septiembre de 1966. JSTOR  e24931041.
  24. ^ Korpela, Jukka K. (14 de marzo de 2014) [7 de junio de 2006]. Unicode Explained – Internationalize Documents, Programs, and Web Sites (Segunda edición de la primera edición). O'Reilly Media, Inc., pág. 118. ISBN 978-0-596-10121-3.
  25. ^ ANSI INCITS 4-1986 (R2007): Estándar nacional estadounidense para sistemas de información: conjuntos de caracteres codificados: código estándar nacional estadounidense de 7 bits para el intercambio de información (ASCII de 7 bits) , 2007 [1986]
  26. ^ "INCITS 4-1986[R2012]: Sistemas de información - Conjuntos de caracteres codificados - Código estándar nacional estadounidense de 7 bits para el intercambio de información (ASCII de 7 bits)". 15 de junio de 2012. Archivado desde el original el 28 de febrero de 2020. Consultado el 28 de febrero de 2020 .
  27. ^ "INCITS 4-1986[R2017]: Sistemas de información - Conjuntos de caracteres codificados - Código estándar nacional estadounidense de 7 bits para el intercambio de información (ASCII de 7 bits)". 2 de noviembre de 2017 [9 de junio de 2017]. Archivado desde el original el 28 de febrero de 2020. Consultado el 28 de febrero de 2020 .
  28. ^ "INCITS 4-1986 (R2022)". tienda web.ansi.org .
  29. ^ Secuenciación de bits del Código estándar nacional estadounidense para el intercambio de información en la transmisión de datos en serie por bit , Instituto Nacional Estadounidense de Estándares (ANSI), 1966, X3.15-1966
  30. «Reglamento Telegráfico y Protocolo Final (Madrid, 1932)» (PDF) . Archivado desde el original el 2023-08-21 . Consultado el 2024-06-09 .
  31. ^ ab Smith, Gil (2001). "Códigos de comunicación por teletipo" (PDF) . Baudot.net. Archivado (PDF) desde el original el 20 de agosto de 2008. Consultado el 11 de julio de 2008 .
  32. ^ Sawyer, Stanley A.; Krantz, Steven George (1995). Introducción a TeX para científicos. CRC Press . p. 13. Bibcode :1995tps..book.....S. ISBN 978-0-8493-7159-2Archivado desde el original el 22 de diciembre de 2016. Consultado el 29 de octubre de 2016 .
  33. ^ Savard, John JG "Teclados de ordenador". Archivado desde el original el 24 de septiembre de 2014. Consultado el 24 de agosto de 2014 .
  34. ^ "Definición ASCIIbética". PC Magazine . Archivado desde el original el 9 de marzo de 2013. Consultado el 14 de abril de 2008 .
  35. ^ Resnick, Peter W., ed. (abril de 2001). Formato de mensajes de Internet. doi : 10.17487/RFC2822 . RFC 2822. Consultado el 13 de junio de 2016 .(NB. NO-WS-CTL.)
  36. ^ McConnell, Robert; Haynes, James; Warren, Richard. "Entender los códigos ASCII". Archivado desde el original el 27 de febrero de 2014. Consultado el 11 de mayo de 2014 .
  37. ^ Barry Margolin (29 de mayo de 2014). "Re: historia del editor y del procesador de textos (antes: Re: RTF para emacs)". help-gnu-emacs (Lista de correo). Archivado desde el original el 14 de julio de 2014. Consultado el 11 de julio de 2014 .
  38. ^ ab "Manual del sistema de multiprogramación PDP-6" (PDF) . Digital Equipment Corporation (DEC). 1965. p. 43. Archivado (PDF) desde el original el 14 de julio de 2014 . Consultado el 10 de julio de 2014 .
  39. ^ ab "Manual de referencia PDP-10, libro 3, Comunicación con el monitor" (PDF) . Digital Equipment Corporation (DEC). 1969. pág. 5-5. Archivado (PDF) desde el original el 2011-11-15 . Consultado el 2014-07-10 .
  40. ^ "Ayuda - Manual de GNU Emacs". Archivado desde el original el 2018-07-11 . Consultado el 2018-07-11 .
  41. ^ "Secuencias de control de XTerm" . Consultado el 17 de enero de 2024 .
  42. ^ Tim Paterson (8 de agosto de 2007). "¿Es DOS una copia de CP/M?". DosMan Drivel . Archivado desde el original el 20 de abril de 2018. Consultado el 19 de abril de 2018 .
  43. ^ Ossanna, JF ; Saltzer, JH (17-19 de noviembre de 1970). "Problemas de ingeniería técnica y humana en la conexión de terminales a un sistema de tiempo compartido" (PDF) . Actas de la Conferencia Conjunta de Computadoras de Otoño (FJCC) del 17 al 19 de noviembre de 1970 . AFIPS Press. págs. 355-362. Archivado (PDF) desde el original el 19 de agosto de 2012 . Consultado el 29 de enero de 2013 . El uso de una función de "nueva línea" (retorno de carro y avance de línea combinados) es más simple tanto para el hombre como para la máquina que requerir ambas funciones para iniciar una nueva línea; el Estándar Nacional Estadounidense X3.4-1968 permite que el código de avance de línea lleve el significado de nueva línea.
  44. ^ O'Sullivan, T. (1971-05-19). Protocolo TELNET. Grupo de trabajo de ingeniería de Internet (IETF). págs. 4-5. doi : 10.17487/RFC0158 . RFC 158. Consultado el 28 de enero de 2013 .
  45. ^ Neigus, Nancy J. (12 de agosto de 1973). Protocolo de transferencia de archivos. Grupo de trabajo de ingeniería de Internet (IETF). doi : 10.17487/RFC0542 . RFC 542. Consultado el 28 de enero de 2013 .
  46. ^ Postel, Jon (junio de 1980). Protocolo de transferencia de archivos. Grupo de trabajo de ingeniería de Internet (IETF). doi : 10.17487/RFC0765 . RFC 765. Consultado el 28 de enero de 2013 .
  47. ^ "Plan de traducción al final del ciclo de vida de Mercurial". Mercurial. Archivado desde el original el 16 de junio de 2016. Consultado el 24 de junio de 2017 .
  48. ^ Bernstein, Daniel J. "Bare LFs in SMTP". Archivado desde el original el 29 de octubre de 2011. Consultado el 28 de enero de 2013 .
  49. ^ Guía de interfaz CP/M 1.4 (PDF) . Digital Research . 1978. p. 10. Archivado (PDF) desde el original el 29 de mayo de 2019 . Consultado el 7 de octubre de 2017 .
  50. ^ Haynes, Jim (13 de enero de 2015). "De primera mano: Chad es nuestro producto más importante: la memoria de un ingeniero de Teletype Corporation". Wiki de historia de la ingeniería y la tecnología (ETHW) . Consultado el 14 de febrero de 2023. Se produjo el cambio de ASCII 1961 a ASCII 1968. Algunos lenguajes informáticos usaban caracteres en ASCII 1961, como la flecha hacia arriba y la flecha hacia la izquierda. Estos caracteres desaparecieron del ASCII 1968. Trabajamos con Fred Mocking, que para entonces estaba en Ventas en Teletype , en un cilindro tipográfico que comprometería los caracteres cambiantes para que los significados del ASCII 1961 no se perdieran por completo. El carácter de subrayado se hizo más bien en forma de cuña para que también pudiera servir como flecha hacia la izquierda.
  51. ^ Bemer, Robert William . «Bemer se encuentra con Europa (estándares informáticos) – Viñetas de la historia de la informática». Trailing-edge.com. Archivado desde el original el 17 de octubre de 2013. Consultado el 14 de abril de 2008 .(NB: Bemer trabajaba en IBM en ese momento.)
  52. ^ "Robert William Bemer: Biografía". 9 de marzo de 2013. Archivado desde el original el 16 de junio de 2016.
  53. ^ Johnson, Lyndon Baines (11 de marzo de 1968). "Memorando por el que se aprueba la adopción por parte del Gobierno Federal de un código estándar para el intercambio de información". The American Presidency Project. Archivado desde el original el 14 de septiembre de 2007. Consultado el 14 de abril de 2008 .
  54. ^ Richard S. Shuford (20 de diciembre de 1996). "Re: ¿Historia temprana del ASCII?". Grupo de noticias : alt.folklore.computers. Usenet:  [email protected].
  55. ^ Folts, Harold C.; Karp, Harry, eds. (1 de febrero de 1982). Compilación de estándares de comunicación de datos (segunda edición revisada). McGraw-Hill Inc. ISBN  978-0-07-021457-6.
  56. ^ Dubost, Karl (6 de mayo de 2008). "El crecimiento de UTF-8 en la Web". Blog del W3C . Consorcio World Wide Web . Archivado desde el original el 16 de junio de 2016. Consultado el 15 de agosto de 2010 .
  57. ^ ab Davis, Mark (5 de mayo de 2008). "Pasando a Unicode 5.1". Blog oficial de Google . Archivado desde el original el 16 de junio de 2016. Consultado el 15 de agosto de 2010 .
  58. ^ Davis, Mark (28 de enero de 2010). «Unicode se acerca al 50% de la web». Blog oficial de Google . Archivado desde el original el 16 de junio de 2016. Consultado el 15 de agosto de 2010 .
  59. ^ "Criterios específicos", anexo al memorando de RW Reach, "Reunión X3-2 – 14 y 15 de septiembre", 18 de septiembre de 1961
  60. ^ Maréchal, R. (22 de diciembre de 1967), ISO/TC 97 – Computadoras y procesamiento de información: aceptación del borrador de la recomendación ISO n.º 1052
  61. ^ "Especificación DVB-TXT (Teletexto) para transmitir teletexto del Sistema B de la UIT-R en flujos de bits DVB".
  62. ^ Referencia técnica (PDF) . Biblioteca de referencia de hardware de computadoras personales (primera edición). IBM. Agosto de 1981. Apéndice C. De caracteres, pulsaciones de teclas y color.
  63. ^ El Consorcio Unicode (27 de octubre de 2006). "Capítulo 13: Áreas especiales y caracteres de formato" (PDF) . En Allen, Julie D. (ed.). El estándar Unicode, versión 5.0 . Upper Saddle River, Nueva Jersey, EE. UU.: Addison-Wesley Professional . pág. 314. ISBN. 978-0-321-48091-0Archivado (PDF) del original el 9 de octubre de 2022. Consultado el 13 de marzo de 2015 .
  64. ^ "utf-8(7) – Página del manual de Linux". Man7.org. 2014-02-26. Archivado desde el original el 2014-04-22 . Consultado el 2014-04-21 .

Lectura adicional

  • Bemer, Robert William (1960). "Una propuesta para la compatibilidad de códigos de caracteres". Comunicaciones de la ACM . 3 (2): 71–72. doi : 10.1145/366959.366961 . S2CID  9591147.
  • Bemer, Robert William (23 de mayo de 2003). "La Babel de los códigos antes de ASCII: la encuesta de 1960 sobre conjuntos de caracteres codificados: las razones para ASCII". Archivado desde el original el 17 de octubre de 2013. Consultado el 9 de mayo de 2016 .de:
  • "Código estándar nacional estadounidense para el intercambio de información | ANSI X3.4-1977" (PDF) . Instituto Nacional de Normas. 1977. Archivado (PDF) desde el original el 2022-10-09. (facsímil, no legible por máquina)
  • Robinson, GS; Cargill, C. (1996). "Historia e impacto de los estándares informáticos". Computer . Vol. 29, núm. 10. págs. 79–85. doi :10.1109/2.539725.
  • Mullendore, Ralph Elvin (1964) [1963]. Ptak, John F. (ed.). "Sobre el desarrollo temprano de ASCII: la historia de ASCII". JF Ptak Science Books (publicado en marzo de 2012). Archivado desde el original el 26 de mayo de 2016. Consultado el 26 de mayo de 2016 .
  • «Controles C0 y latín básico – Rango: 0000–007F» (PDF) . El estándar Unicode 8.0 . Unicode, Inc. 2015 [1991]. Archivado (PDF) desde el original el 2016-05-26 . Consultado el 2016-05-26 .
Obtenido de "https://es.wikipedia.org/w/index.php?title=ASCII&oldid=1247735990"