stringtranslate.com

Carácter de control

En informática y telecomunicaciones , un carácter de control o carácter no imprimible ( NPC ) es un punto de código en un conjunto de caracteres que no representa un carácter o símbolo escrito. Se utilizan como señalización dentro de banda para provocar efectos distintos de la adición de un símbolo al texto. Todos los demás caracteres son principalmente caracteres gráficos , también conocidos como caracteres de impresión (o caracteres imprimibles ), excepto quizás los caracteres de " espacio ". En el estándar ASCII hay 33 caracteres de control, como por ejemplo el código 7, BEL , que hace sonar el timbre del terminal.

Historia

Los signos de procedimiento en código Morse son una forma de carácter de control.

En el código Baudot de 1870 se introdujo una forma de caracteres de control : NUL y DEL. El código Murray de 1901 agregó el retorno de carro (CR) y el avance de línea (LF), y otras versiones del código Baudot incluyeron otros caracteres de control.

El carácter de campana (BEL), que hacía sonar una campana para alertar a los operadores, también fue uno de los primeros caracteres de control de teletipo .

Algunos caracteres de control también se han denominado "efectores de formato".

En ASCII

Los primeros símbolos asignados a los 32 caracteres de control, espacios y caracteres de eliminación. (ISO 2047, MIL-STD-188-100, 1972)

Había bastantes caracteres de control definidos (33 en ASCII, y el estándar ECMA-48 añade 32 más). Esto se debía a que los primeros terminales tenían controles mecánicos o eléctricos muy primitivos que hacían que cualquier tipo de API que recordara el estado fuera bastante costosa de implementar, por lo que un código diferente para todas y cada una de las funciones parecía un requisito. Rápidamente se hizo posible y económico interpretar secuencias de códigos para realizar una función, y los fabricantes de dispositivos encontraron una manera de enviar cientos de instrucciones de dispositivos. En concreto, utilizaron el código ASCII 27 10 (escape), seguido de una serie de caracteres denominados "secuencia de control" o "secuencia de escape". El mecanismo fue inventado por Bob Bemer , el padre de ASCII. Por ejemplo, la secuencia del código 27 10 , seguida de los caracteres imprimibles "[2;10H", haría que un terminal VT100 de Digital Equipment Corporation moviera el cursor a la décima celda de la segunda línea de la pantalla. Existen varios estándares para estas secuencias, en particular ANSI X3.64 . Pero el número de variaciones no estándar en el uso es grande, especialmente entre las imprentas, donde la tecnología ha avanzado mucho más rápido de lo que cualquier organismo de normalización puede seguir.

Todas las entradas en la tabla ASCII debajo del código 32 10 (técnicamente el conjunto de códigos de control C0 ) son de este tipo, incluidos CR y LF que se utilizan para separar líneas de texto. El código 127 10 ( DEL ) también es un carácter de control. [1] [2] Los conjuntos ASCII extendidos definidos por ISO 8859 agregaron los códigos 128 10 a 159 10 como caracteres de control. Esto se hizo principalmente para que, si se eliminaba el bit alto, no cambiara un carácter de impresión a un código de control C0. Este segundo conjunto se llama conjunto C1 .

Estos 65 códigos de control se transfirieron a Unicode . Unicode agregó más caracteres que podrían considerarse controles, pero hace una distinción entre estos "caracteres de formato" (como los no unidos de ancho cero ) y los 65 caracteres de control.

El juego de caracteres del Código de intercambio decimal codificado en binario extendido (EBCDIC) contiene 65 códigos de control, incluidos todos los códigos de control ASCII más códigos adicionales que se utilizan principalmente para controlar periféricos de IBM.

Los caracteres de control en ASCII que todavía se usan comúnmente incluyen:

Se puede describir que los caracteres de control hacen algo cuando el usuario los ingresa, como el código 3 ( carácter de fin de texto , ETX, ^C ) para interrumpir el proceso en ejecución, o el código 4 ( carácter de fin de transmisión , EOT, ^D ), utilizado para finalizar la entrada de texto en Unix o para salir de un shell de Unix . Estos usos normalmente tienen poco que ver con su uso cuando están en el texto que se genera.

En Unicode

En Unicode, los "caracteres de control" son U+0000—U+001F (controles C0), U+007F (eliminar) y U+0080—U+009F (controles C1). Su categoría general es "Cc". Los códigos de formato son distintos, en la Categoría General "Cf". Los caracteres de control Cc no tienen nombre en Unicode, pero en su lugar reciben etiquetas como "<control-001A>". [4]

Mostrar

Existen varias técnicas para mostrar caracteres que no se pueden imprimir, que pueden ilustrarse con el carácter de campana en codificación ASCII :

Cómo se asignan los caracteres de control a los teclados

Los teclados basados ​​en ASCII tienen una tecla denominada " Control ", "Ctrl" o (raramente) "Cntl" que se usa de manera muy similar a una tecla Mayús y se presiona en combinación con otra letra o tecla de símbolo. En una implementación, la tecla de control genera el código 64 lugares debajo del código de la letra (generalmente) mayúscula con la que se presiona en combinación (es decir, resta 0x40 del valor del código ASCII de la letra (generalmente) mayúscula). La otra implementación es tomar el código ASCII producido por la clave y bit a bit Y con 0x1F, forzando los bits 5 a 7 a cero. Por ejemplo, al presionar "control" y la letra "g" (que es 0110 0111 en binario ), se produce el código 7 (BELL, 7 en base diez o 0000 0111 en binario). El carácter NULO (código 0) se representa mediante Ctrl-@, siendo "@" el código inmediatamente antes de "A" en el juego de caracteres ASCII. Por conveniencia, algunas terminales aceptan Ctrl-Espacio como alias para Ctrl-@. En cualquier caso, esto produce uno de los 32 códigos de control ASCII entre 0 y 31. Ninguno de los métodos funciona para producir el carácter DEL debido a su ubicación especial en la tabla y su valor (código 127 10 ), Ctrl-? A veces se utiliza para este personaje. [5]

Cuando se mantiene presionada la tecla de control, las teclas de letras producen los mismos caracteres de control independientemente del estado de las teclas Mayús o Bloq Mayús . En otras palabras, no importa si la clave habría producido una letra mayúscula o minúscula. La interpretación de la clave de control con las teclas de espacio, caracteres gráficos y dígitos (códigos ASCII 32 a 63) varía según el sistema. Algunos producirán el mismo código de caracteres que si no se mantuviera presionada la tecla de control. Otros sistemas traducen estas teclas en caracteres de control cuando se mantiene presionada la tecla de control. La interpretación de la clave de control con claves no ASCII ("extrañas") también varía entre sistemas.

Los caracteres de control a menudo se representan en una forma imprimible conocida como notación de intercalación imprimiendo un signo de intercalación (^) y luego el carácter ASCII que tiene un valor del carácter de control más 64. Los caracteres de control generados usando teclas de letras se muestran así con mayúsculas. forma de la carta. Por ejemplo, ^G representa el código 7, que se genera al presionar la tecla G cuando se mantiene presionada la tecla de control.

Los teclados también suelen tener unas pocas teclas individuales que producen códigos de caracteres de control. Por ejemplo, la tecla denominada "Retroceso" normalmente produce el código 8, el código "Tab" 9, el código "Intro" o "Retorno" 13 (aunque algunos teclados pueden producir el código 10 para "Intro").

Muchos teclados incluyen teclas que no corresponden a ningún carácter de control o imprimible ASCII, por ejemplo, flechas de control del cursor y funciones de procesamiento de textos . Las pulsaciones de teclas asociadas se comunican a los programas de computadora mediante uno de cuatro métodos: apropiarse de caracteres de control que de otro modo no se utilizarían; utilizando alguna codificación distinta a ASCII; usar secuencias de control de múltiples caracteres; o usar un mecanismo adicional además de generar personajes. Los terminales de computadora "tontos" suelen utilizar secuencias de control. Los teclados conectados a computadoras personales independientes fabricados en la década de 1980 suelen utilizar uno (o ambos) de los dos primeros métodos. Los teclados de computadora modernos generan códigos de escaneo que identifican las teclas físicas específicas que se presionan; Luego, el software de computadora determina cómo manejar las teclas que se presionan, incluido cualquiera de los cuatro métodos descritos anteriormente.

El propósito del diseño.

Los caracteres de control fueron diseñados para dividirse en algunos grupos: control de impresión y visualización, estructuración de datos, control de transmisión y varios.

Control de impresión y visualización.

Los caracteres de control de impresión se utilizaron por primera vez para controlar el mecanismo físico de las impresoras, el primer dispositivo de salida. Un ejemplo temprano de esta idea fue el uso de Figuras (FIGS) y Letras (LTRS) en el código Baudot para cambiar entre dos páginas de códigos. Un ejemplo posterior, pero aún temprano, fueron los caracteres de control de carro ASA fuera de banda . Posteriormente, se integraron caracteres de control en el flujo de datos a imprimir. El carácter de retorno de carro (CR), cuando se envía a dicho dispositivo, hace que coloque el carácter en el borde del papel en el que comienza la escritura (también puede, o no, mover la posición de impresión a la siguiente línea). El carácter de avance de línea (LF/NL) hace que el dispositivo coloque la posición de impresión en la siguiente línea. Puede (o no), dependiendo del dispositivo y su configuración, también mover la posición de impresión al inicio de la siguiente línea (que sería la posición más a la izquierda para escrituras de izquierda a derecha , como los alfabetos utilizados para la escritura occidental). idiomas, y la posición más a la derecha para escrituras de derecha a izquierda , como los alfabetos hebreo y árabe). Los caracteres de tabulación vertical y horizontal (VT y HT/TAB) hacen que el dispositivo de salida mueva la posición de impresión a la siguiente tabulación en la dirección de lectura. El carácter de avance de página (FF/NP) inicia una nueva hoja de papel y puede moverse o no al inicio de la primera línea. El carácter de retroceso (BS) mueve la posición de impresión un espacio de carácter hacia atrás. En las impresoras, incluidas las terminales de copia impresa , esto se utiliza con mayor frecuencia para que la impresora pueda sobreimprimir caracteres para crear otros caracteres que normalmente no están disponibles. En terminales de vídeo y otros dispositivos de salida electrónicos, a menudo hay opciones de configuración de software (o hardware) que permiten un retroceso destructivo (por ejemplo, una secuencia BS, SP, BS), que borra, o uno no destructivo, que no lo hace. Los caracteres de entrada y salida (SI y SO) seleccionaron conjuntos de caracteres alternativos, fuentes, subrayado u otros modos de impresión. Las secuencias de escape se utilizaban a menudo para hacer lo mismo.

Con la llegada de terminales de computadora que no imprimían físicamente en papel y, por lo tanto, ofrecían más flexibilidad con respecto a la ubicación de la pantalla, el borrado, etc., se adaptaron los códigos de control de impresión. Los avances de formulario, por ejemplo, normalmente borraban la pantalla y no había ninguna nueva página de papel a la que pasar. Se desarrollaron secuencias de escape más complejas para aprovechar la flexibilidad de los nuevos terminales y, de hecho, de las impresoras más nuevas. El concepto de personaje de control siempre había sido algo limitante, y lo era aún más cuando se usaba con hardware nuevo y mucho más flexible. Las secuencias de control (a veces implementadas como secuencias de escape) pudieron igualar la nueva flexibilidad y potencia y se convirtieron en el método estándar. Sin embargo, había y sigue habiendo una gran variedad de secuencias estándar para elegir.

Estructuración de datos

Los separadores (Archivo, Grupo, Registro y Unidad: FS, GS, RS y US) se crearon para estructurar datos, generalmente en una cinta, con el fin de simular tarjetas perforadas . Fin del medio (EM) advierte que la cinta (u otro medio de grabación) está terminando. Si bien muchos sistemas utilizan CR/LF y TAB para estructurar datos, es posible encontrar caracteres de control separador en datos que necesitan estructurarse. Los caracteres de control del separador no están sobrecargados; no hay ningún uso general de ellos excepto para separar datos en agrupaciones estructuradas. Sus valores numéricos son contiguos al carácter de espacio, que puede considerarse miembro del grupo, como separador de palabras.

Por ejemplo, el separador RS lo utiliza RFC  7464 (Secuencias de texto JSON) para codificar una secuencia de elementos JSON. Cada elemento de secuencia comienza con un carácter RS ​​y termina con un avance de línea. Esto permite serializar secuencias JSON abiertas. Es uno de los protocolos de transmisión JSON .

Control de transmisión

Los caracteres de control de transmisión estaban destinados a estructurar un flujo de datos y gestionar la retransmisión o el fallo gradual, según fuera necesario, ante errores de transmisión.

El carácter de inicio del encabezado (SOH) tenía como objetivo marcar una sección sin datos de un flujo de datos: la parte de un flujo que contiene direcciones y otros datos internos. El carácter de inicio de texto (STX) marcaba el final del encabezado y el inicio de la parte textual de una secuencia. El carácter de fin de texto (ETX) marcaba el final de los datos de un mensaje. Una convención ampliamente utilizada es convertir los dos caracteres que preceden a ETX en una suma de verificación o CRC para fines de detección de errores. El carácter de fin de bloque de transmisión (ETB) se utilizó para indicar el final de un bloque de datos, donde los datos se dividieron en dichos bloques para fines de transmisión.

El carácter de escape ( ESC ) estaba destinado a "entrecomillar" el siguiente carácter; si fuera otro carácter de control, lo imprimiría en lugar de realizar la función de control. Hoy en día casi nunca se utiliza para este propósito. Se utilizan varios caracteres imprimibles como " caracteres de escape " visibles, según el contexto.

El carácter sustituto ( SUB ) estaba destinado a solicitar una traducción del siguiente carácter de un carácter imprimible a otro valor, generalmente estableciendo el bit 5 en cero. Esto resulta útil porque algunos medios (como las hojas de papel producidas por máquinas de escribir) sólo pueden transmitir caracteres imprimibles. Sin embargo, en sistemas MS-DOS con archivos abiertos en modo texto, el "fin de texto" o "fin de archivo" se marca con este carácter Ctrl-Z , en lugar de Ctrl-C o Ctrl-D , que son comunes en otros sistemas. sistemas operativos.

El carácter de cancelación ( CAN ) indicaba que el elemento anterior debía descartarse. El carácter de reconocimiento negativo ( NAK ) es una señal definitiva para, generalmente, señalar que la recepción fue un problema y, a menudo, que el elemento actual debe enviarse nuevamente. El carácter de reconocimiento ( ACK ) se utiliza normalmente como indicador para indicar que no se ha detectado ningún problema con el elemento actual.

Cuando un medio de transmisión es semidúplex (es decir, puede transmitir en una sola dirección a la vez), normalmente hay una estación maestra que puede transmitir en cualquier momento y una o más estaciones esclavas que transmiten cuando tienen permiso. El carácter de consulta ( ENQ ) generalmente lo utiliza una estación maestra para pedirle a una estación esclava que envíe su siguiente mensaje. Una estación esclava indica que ha completado su transmisión enviando el carácter de fin de transmisión ( EOT ).

Los códigos de control de dispositivos (DC1 a DC4) eran originalmente genéricos y debían ser implementados según fuera necesario por cada dispositivo. Sin embargo, una necesidad universal en la transmisión de datos es solicitar al remitente que deje de transmitir cuando un receptor no puede aceptar más datos temporalmente. Digital Equipment Corporation inventó una convención que utilizaba 19 (el carácter de control del dispositivo de 3 ( DC3 ), también conocido como control-S o XOFF ) para "S" la transmisión superior, y 17 (el carácter de control del dispositivo de 1 ( DC1 ), también conocido como control -Q, o XON ) para iniciar la transmisión. Se ha vuelto tan utilizado que la mayoría no se da cuenta de que no forma parte del ASCII oficial. Esta técnica, independientemente de cómo se implemente, evita cables adicionales en el cable de datos dedicados únicamente a la gestión de la transmisión, lo que ahorra dinero. Sin embargo, se debe utilizar un protocolo sensato para el uso de dichas señales de control de flujo de transmisión para evitar posibles condiciones de bloqueo.

El carácter de escape del enlace de datos ( DLE ) estaba destinado a ser una señal al otro extremo de un enlace de datos de que el siguiente carácter es un carácter de control como STX o ETX. Por ejemplo, un paquete puede estructurarse de la siguiente manera ( DLE ) <STX> <PAYLOAD> ( DLE ) <ETX>.

Códigos varios

El código 7 ( BEL ) está destinado a provocar una señal audible en el terminal receptor. [6]

Muchos de los caracteres de control ASCII fueron diseñados para dispositivos de la época que no se ven con frecuencia en la actualidad. Por ejemplo, el código 22, "inactivo síncrono" ( SYN ), fue enviado originalmente por módems síncronos (que tienen que enviar datos constantemente) cuando no había datos reales para enviar. (Los sistemas modernos suelen utilizar un bit de inicio para anunciar el comienzo de una palabra transmitida; esta es una característica de la comunicación asíncrona . Los enlaces de comunicación síncronos se veían más a menudo con mainframes, donde normalmente se ejecutaban a través de líneas corporativas arrendadas para conectar una mainframe a otra. mainframe o quizás una minicomputadora).

El código 0 (nombre del código ASCII NUL ) es un caso especial. En la cinta de papel, este es el caso cuando no hay agujeros. Es conveniente tratar esto como un carácter de relleno sin ningún otro significado. Dado que la posición de un carácter NUL no tiene agujeros, se puede reemplazar con cualquier otro carácter en un momento posterior, por lo que normalmente se usaba para reservar espacio, ya sea para corregir errores o para insertar información que estaría disponible más adelante. o en otro lugar. En informática, se utiliza a menudo para rellenar registros de longitud fija ; para marcar el final de una cuerda ; y anteriormente para dar a los dispositivos de impresión tiempo suficiente para ejecutar una función de control .

El código 127 ( DEL , también conocido como "rubout") es también un caso especial. Su código de 7 bits es todo bits en binario, lo que esencialmente borraba una celda de carácter en una cinta de papel cuando se perforaba demasiado. La cinta de papel era un medio de almacenamiento común cuando se desarrolló ASCII, con una historia informática que se remonta a los equipos de descifrado de códigos de la Segunda Guerra Mundial en Biuro Szyfrów . La cinta de papel quedó obsoleta en la década de 1970, por lo que este aspecto inteligente de ASCII rara vez tuvo uso después de eso. Algunos sistemas (como los Apple originales) lo convirtieron en retroceso. Pero debido a que su código está en el rango ocupado por otros caracteres imprimibles, y debido a que no tenía un glifo oficial asignado, muchos proveedores de equipos informáticos lo utilizaron como un carácter imprimible adicional (a menudo un carácter de "cuadro" completamente negro útil para borrar texto sobreimprimiendo con tinta).

Las ROM programables no borrables generalmente se implementan como conjuntos de elementos fusibles, cada uno de los cuales representa un bit , que solo se puede cambiar en una dirección, generalmente de uno a cero. En dichas PROM, los caracteres DEL y NUL se pueden usar de la misma manera que se usaban en la cinta perforada: uno para reservar bytes de relleno sin sentido que se pueden escribir más tarde y el otro para convertir bytes escritos en bytes de relleno sin sentido. Para las PROM que cambian de uno a cero, las funciones de NUL y DEL se invierten; Además, DEL sólo funcionará con caracteres de 7 bits, que rara vez se utilizan en la actualidad; para contenido de 8 bits, se puede utilizar el código de carácter 255, comúnmente definido como un carácter de espacio sin separación, en lugar de DEL.

Muchos sistemas de archivos no permiten caracteres de control en los nombres de archivos , ya que pueden tener funciones reservadas.

Ver también

notas y referencias

  1. ^ Formato ASCII para intercambio de red. 1969-10-01. doi : 10.17487/RFC0020 . RFC 20 . Consultado el 5 de abril de 2023 .
  2. ^ "5.2 Caracteres de control". 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 9 de octubre de 2022.
  3. ^ Documentación de MS-DOS QBasic v1.1. Microsoft 1987-1991.
  4. ^ "4.8 Nombre". La versión 13.0 del estándar Unicode: especificación principal (PDF) . Unicode, Inc. Archivado (PDF) desde el original el 9 de octubre de 2022.
  5. ^ "Caracteres ASCII". Archivado desde el original el 28 de octubre de 2009 . Consultado el 8 de octubre de 2010 .
  6. ^ Formato ASCII para intercambio de red. Octubre de 1969. doi : 10.17487/RFC0020 . RFC 20 . Consultado el 3 de noviembre de 2013 .Un RFC antiguo, que explica la estructura y el significado de los caracteres de control en los capítulos 4.1 y 5.2.

enlaces externos