Códigos de control C0 y C1
El código de control C0 y C1 o los juegos de caracteres de control definen códigos de control para su uso en texto por sistemas informáticos que utilizan ASCII y derivados de ASCII. Los códigos representan información adicional sobre el texto, como la posición de un cursor, una instrucción para comenzar una nueva línea o un mensaje de que se ha recibido el texto.
Los códigos C0 están en el rango 00HEX–1FHEX y el conjunto C0 predeterminado se definió originalmente en ISO 646 (ASCII). Los códigos C1 están en el rango 80HEX–9FHEX y el conjunto C1 predeterminado se definió originalmente en ECMA-48 (armonizado posteriormente con ISO 6429). El sistema ISO/IEC 2022 para especificar caracteres gráficos y de control permite que otros conjuntos C0 y C1 estén disponibles para aplicaciones especializadas, pero rara vez se utilizan.
Controles de CO
ASCII definió 32 caracteres de control, además de un carácter adicional necesario para el carácter DEL, 7FHEX o 01111111BIN (necesario para perforar todos los agujeros en una cinta de papel y borrarlo).
Esta gran cantidad de códigos era deseable en ese momento, ya que los controles de múltiples bytes requerirían la implementación de una máquina de estados en el terminal, lo cual era muy difícil con los terminales mecánicos y electrónicos contemporáneos.
Solo unos pocos códigos han mantenido su uso: BEL, ESC y el "Format Effector" (FEn) caracteres BS, TAB, LF, VT, FF y CR. Otros no se utilizan o han adquirido significados diferentes, como que NUL es el terminador de cadena C. Algunos protocolos de transferencia de datos, como ANPA-1312, Kermit y XMODEM, hacen un uso extensivo de SOH, STX, ETX, EOT, ACK, NAK y SYN para fines que se aproximan a sus definiciones originales; y algunos formatos de archivo utilizan los "separadores de información" (ISn), como el formato de información de Unix y el método de cadena splitlines de Python.
Los nombres de algunos códigos se cambiaron en ISO 6429:1992 (o ECMA-48:1991) para que sean neutrales con respecto a la dirección de escritura. Las abreviaturas utilizadas no se cambiaron, ya que el estándar ya había especificado que permanecerían sin cambios cuando el estándar se traduzca a otros idiomas. En esta tabla se muestran los nombres nuevos y antiguos de los controles renombrados (el nombre antiguo es el que coincide con la abreviatura).
Abreviaturas | Nombre | Descripción | |||||||
---|---|---|---|---|---|---|---|---|---|
^@ | 0 | 00 | NUL | . | Null | No hace nada. El código de la cinta de papel en blanco, y también se utiliza para padding para la transmisión lenta. | |||
^ A | 1 | 01 | TC1, SOH | ␁ | Inicio de Heading | Primer personaje del encabezado de un mensaje. | |||
^ B | 2 | 02 | TC2, STX | ␂ | Inicio del texto | Termina el encabezado y comienza el texto del mensaje. | |||
^C | 3 | 03 | TC3, ETX | ␃ | Fin del texto | Finaliza el texto del mensaje, comienza un pie de página (hasta el siguiente personaje TC). | |||
^D | 4 | 04 | TC4, EOT | ␄ | Fin de la transmisión | Termina la transmisión de uno o más mensajes. Puede colocar terminales en espera. | |||
^ E | 5 | 05 | TC5, ENQ, WRU | ␅ | Pregunta | Intente una respuesta en el extremo receptor, para ver si sigue presente. | |||
^ F | 6 | 06 | TC6, ACK | ␆ | Reconocimiento | Indicación de la recepción exitosa de un mensaje. | |||
^ G | 7 | 07 | BEL | ␇ | Bell, Alert | a | Llamar a la atención de un operador. | ||
^ H | 8 | 08 | FE0, BS | ␈ | Backspace | b | Mueva una posición hacia la izquierda. El siguiente personaje puede sobreimprimir o reemplazar el personaje que estaba allí. | ||
^ I | 9 | 09 | FE1, HT | ␉ | Tabulación de caracteres, Tabulación horizontal | t | Muévete a la siguiente parada. | ||
^J | 10 | 0A | FE2, LF | ␊ | Línea de alimentación | n | Muévete a la misma posición en la siguiente línea (algunos dispositivos también se trasladaron a la columna izquierda). | ||
^K | 11 | 0B | FE3, VT | ␋ | Tabulación de línea, Tabulación vertical | v | Muévete a la siguiente parada de pestaña vertical. | ||
^ L | 12 | 0C | FE4, FF | ␌ | Forma Feed | f | Muévete a la parte superior de la página siguiente. | ||
^M | 13 | 0D | FE5, CR | . | Carriage Return | r | Muévete a la columna cero mientras te quedas en la misma línea. | ||
^ N | 14 | 0E | Así que, LS0 | ␎ | Cambio | Cambiar a un conjunto de caracteres alternativo. | |||
^ O | 15 | 0F | SI, LS1 | ␏ | Cambio | Regrese al carácter regular establecido después de SO. | |||
^P | 16 | 10 | TC7, DC0, DLE | ␐ | Enlace de datos Escape | Causar un número limitado de caracteres seguidos contiguamente para ser interpretado de alguna manera diferente. | |||
^ Q | 17 | 11 | DC1, XON | ␑ | Control de dispositivos Uno | (DC)1 y DC2) o apagado (DC)3 y DC4) dispositivos.
Teletipo utilizado estos para el lector de cintas de papel y el golpe de cinta de papel. El primer uso se convirtió en el estándar de facto para el control de flujo de software. | |||
^ R | 18 | 12 | DC2, TAPE | ␒ | Control de dispositivos Dos. | ||||
^ S | 19 | 13 | DC3, XOFF | ␓ | Control de dispositivos Tres. | ||||
^ T | 20 | 14 | DC4, | ␔ | Control de dispositivos Cuatro | ||||
^ U | 21 | 15 | TC8, NAK | ␕ | Reconocimiento negativo | Respuesta negativa a un remitente, como un error detectado. | |||
^V | 22 | 16 | TC9, SYN | ␖ | Sincrónico Idle | Se envía en sistemas de transmisión sincronizados cuando no se transmite ningún otro personaje. | |||
^ W | 23 | 17 | TC10, ETB | ␗ | Fin del bloque de transmisión | Fin de un bloque de transmisión de datos cuando los datos se dividen en tales bloques para fines de transmisión. | |||
^ X | 24 | 18 | CAN | ␘ | Cancelar | Indica que los datos anteriores están en error o deben ser ignorados. | |||
^ Y | 25 | 19 | EM | ␙ | Fin del medio | Indica en papel o cintas magnéticas que se había alcanzado el final de la parte utilizable de la cinta. | |||
^Z | 26 | 1A | SUB | ␚ | Substituto | Reemplaza un personaje que se encontró inválido o en error. Debería ser ignorado. | |||
^ | 27 | 1B | ESC | ␛ | Escape | e | Altera el significado de un número limitado de bytes siguientes. Hoy en día esto es casi siempre usado para introducir una secuencia de escape ANSI. | ||
^ | 28 | 1C | ES4, SM | ␜ | Separador de archivos | Se puede utilizar como delimitadores para marcar campos de estructuras de datos. EE.UU. es el nivel más bajo, mientras que RS, GS y FS son de nivel creciente para dividir grupos compuestos de elementos del nivel bajo él. SP (espacio) podría considerarse un nivel aún más bajo. | |||
^] | 29 | 1D | ES3, SG | ␝ | Separador de grupo | ||||
^ | 30 | 1E | ES2, RS | ␞ | Separador de discos | ||||
^_ | 31 | 1F | ES1, Estados Unidos | ␟ | Separador de unidad | ||||
Aunque técnicamente no es parte de la gama de caracteres de control C0, se puede pensar que los dos caracteres siguientes tienen algunas características de los caracteres de control. | |||||||||
32 | 20 | SP | ␠ | Espacio | Mueva a la derecha una posición de carácter. | ||||
^? | 127 | 7F | DEL | ␡ | Suprimir | Debería ser ignorado. Solía eliminar caracteres en la cinta perforada golpeando todos los agujeros. |
- ^ Teletipo etiquetado la llave WRU para '¿quién eres? '
- ^ El nombre BELL es asignado por Unicode al carácter emoji no relacionado 🔔 (U+1F514). Mientras que los personajes de control C0 y C1 no fueron nombrados formalmente por el estándar Unicode en ese momento, esto chocó con el uso existente de BELL como el nombre de este personaje de control en software después de las versiones anteriores de UTS#18 (el estándar de Expresiones Regulares Unicode), por ejemplo en Perl. Unicode acepta ahora ALERT y BEL (pero no BELL) como alias formales para el personaje de control, aunque el gráfico de códigos todavía lista BELL como el alias ISO 6429, y el punto de código de control correspondiente se llama SYMBOL FOR BELL. Perl cambió posteriormente a utilizar BELL para el emoji en la versión 5.18.
- ^ a b ISO/IEC 2022 (ECMA-35) se refiere a estos como LS0 y LS1 en entornos de 8 bits, y como SI y SO en entornos de 7 bits.
- ^ La primera edición de 1963 de ASCII clasificada DLE como un control de dispositivos, en lugar de un control de transmisión, y le dio la abreviación DC0 ("control de dispositivos reservados para el escape de enlace de datos").
- ^ El 'e' secuencia de escape no es parte de ISO C y muchas otras especificaciones de lenguaje. However, it is understood by several compilers, including GCC.
Controles C1
En 1973, ECMA-35 e ISO 2022 intentaron definir un método para que un código "ASCII extendido" El código podría convertirse en un código de 7 bits correspondiente y viceversa. En un entorno de 7 bits, Shift Out (SO) cambiaría el significado de los 96 bytes 0x20 hasta 0x7F (es decir, todos menos los códigos de control C0), para ser los caracteres que imprimiría un entorno de 8 bits si usara el mismo código con el bit alto configurado. Esto significaba que el rango 0x80 hasta 0x9F no podía imprimirse en un entorno de 7 bits, por lo que se decidió que no había alternativa. conjunto de caracteres podría usarlos, y que estos códigos deberían ser códigos de control adicionales, que se conocen como códigos de control C1. Para permitir que un entorno de 7 bits utilice estos nuevos controles, las secuencias ESC @
hasta ESC _
debían considerarse equivalentes. Los últimos estándares ISO 8859 abandonaron el soporte para códigos de 7 bits, pero conservaron esta gama de caracteres de control.
El primer conjunto de códigos de control C1 registrado para su uso con ISO 2022 fue DIN 31626, un conjunto especializado para uso bibliográfico que se registró en 1979.
El conjunto ISO/IEC 6429 de uso general más común se registró en 1983, aunque la especificación ECMA-48 en la que se basó se publicó por primera vez en 1976 y JIS X 0211 (anteriormente JIS C 6323). Nombres simbólicos definidos por RFC 1345 y los primeros borradores de ISO 10646, pero no en ISO/IEC 6429 (PAD, HOP y SGC) también se utilizan.
Excepto SS2 y SS3 en texto EUC-JP, y NEL en texto transcodificado de EBCDIC, las formas de 8 bits de estos códigos casi nunca se utilizaron. CSI, DCS y OSC se utilizan para controlar terminales de texto y emuladores de terminales, pero casi siempre utilizando sus representaciones de código de escape de 7 bits. Hoy en día, si se encuentran estos códigos, es mucho más probable que impriman caracteres desde esa posición de Windows-1252 o Mac OS Roman.
Abbr | Nombre | Descripción | |||
---|---|---|---|---|---|
@ | 128 | 80 | PAD | Carácter de relleno | Propuesto como un "padding" o "alta byte" para caracteres de un solo byte para hacerlos dos bytes largos para facilitar la interoperabilidad con múltiples caracteres byte. Extended Unix Code (EUC) ocasionalmente usa esto. |
A | 129 | 81 | HOP | High Octet Preset | Se propone establecer el byte alto de una secuencia de caracteres múltiples byte para que sólo necesiten un byte cada uno, como una forma simple de compresión de datos. |
B | 130 | 82 | BPH | Permiso de ruptura Aquí. | Sigue un personaje gráfico donde se permite una ruptura de línea. Bastante equivalente a un espacio suave de hifeno o de ancho cero, excepto que no define lo que se imprimen en la rotura de línea. |
C | 131 | 83 | NBH | No hay descanso aquí | Sigue el carácter gráfico que no debe ser roto. Vea también la palabra ensamblador. |
D | 132 | 84 | IND | Índice | Muévete una línea sin mover la horzón, para eliminar la ambigüedad sobre el significado de LF. |
E | 133 | 85 | NEL | Next Line | Equivalente a CR+LF, para que coincida con el carácter de control EBCDIC. |
F | 134 | 86 | SSA | Inicio del área seleccionada | Utilizado por terminales de bloques. En xterm ESC F pasa a la esquina inferior izquierda de la pantalla, ya que cierto software asume este comportamiento.
|
G | 135 | 87 | ESA | Fin del área seleccionada | |
H | 136 | 88 | HTS |
| Establecer una parada de pestañas en la posición actual. |
I | 137 | 89 | HTJ |
| Justifique el texto desde la última pestaña en contra de la siguiente pestaña parar. |
J | 138 | 8A | VTS |
| Establecer una parada de pestaña vertical. |
K | 139 | 8B | PLD |
| Para producir subscriptos y superscriptos en ISO/IEC 6429. Uso de subscriptos PLD text PLU mientras que los superscriptos usan PLU text PLD .
|
L | 140 | 8C | PLU |
| |
M | 141 | 8D | RI |
| Muévete una línea. |
N | 142 | 8E | SS2 | Single-Shift 2 | El siguiente personaje es de los conjuntos G2 o G3, respectivamente. |
O | 143 | 8F | SS3 | Single-Shift 3 | |
P | 144 | 90 | DCS | Cierre de control de dispositivos | Seguido por una cadena de caracteres imprimibles (0x20 a 0x7E) y efectos de formato (0x08 a 0x0D), terminado por ST (0x9C). Xterm definió varios de estos. |
Q | 145 | 91 | PU1 | Uso privado 1 | Reservada para función privada acordada entre el remitente y el destinatario de los datos. |
R | 146 | 92 | PU2 | Uso privado 2 | |
S | 147 | 93 | STS | Estado de transmisión | |
T | 148 | 94 | CCH | Cancelar carácter | Backspace destructivo, para eliminar la ambigüedad sobre el significado de BS. |
U | 149 | 95 | MW | Mensaje esperando | |
V | 150 | 96 | SPA | Inicio de Área Protegida | Utilizado por terminales de bloques. |
W | 151 | 97 | EPA | Fin de la zona protegida | |
X | 152 | 98 | SOS | Inicio de la cuerda | Seguido por una cadena de control terminada por ST (0x9C) que (a diferencia DCS, OSC, PM o APC) puede contener cualquier carácter excepto SOS o ST. |
Y | 153 | 99 | SGC, SGCI | Presentación de caracteres gráficos únicos | Intended to allow an arbitrary Unicode character to be print; it would be followed by that character, most likely encoded in UTF-1. |
Z | 154 | 9A | SCI | Personaje único Introducer | Para ser seguido por un único personaje imprimible (0x20 a 0x7E) o un efector de formato (0x08 a 0x0D), y para imprimirlo como ASCII sin importar los conjuntos gráficos o de control que se utilizaran. |
[ | 155 | 9B | CSI | Control Sequence Introducer | Se utiliza para introducir secuencias de control que toman parámetros. Usado para secuencias de escape ANSI. |
156 | 9C | ST | String Terminator | Termina una cadena iniciada por DCS, SOS, OSC, PM o APC. | |
] | 157 | 9D | OSC | Mando del Sistema Operativo | Seguido por una cadena de caracteres imprimibles (0x20 a 0x7E) y Efectores de formato (0x08 a 0x0D), terminados por ST (0x9C), destinados a permitir la señalización en banda de información de protocolo, pero raramente utilizados para ese propósito.
Algunos emuladores terminales, incluyendo xterm, utilizan secuencias OSC para establecer el título de ventana y cambiar la paleta de colores. También pueden apoyar la terminación de una secuencia OSC con BEL en lugar de ST. Kermit utilizó APC para transmitir comandos. |
^ | 158 | 9E | PM | Privacidad | |
¿Qué? | 159 | 9F | APC | Application Program Command |
- ^ En versiones tempranas el rango excluido SP y DEL
- ^ a b c No es parte de ISO/IEC 6429 (ECMA-48)
- ^ a b c d No es parte de la primera edición de ISO/IEC 6429.
- ^ Deprecated in 1988 and withdrawn in 1992 from ISO/IEC 6429 (1986 and 1991 respectively for ECMA-48).
Otros conjuntos de códigos de control
El mecanismo de extensión ISO/IEC 2022 (ECMA-35) permitió secuencias de escape para cambiar los conjuntos C0 y C1. El juego de caracteres de control C0 estándar que se muestra arriba se elige con la secuencia ESC! @
y el conjunto C1 anterior elegido con la secuencia ESC " C
.
Se han definido varias alternativas oficiales y no oficiales, pero esta está bastante obsoleta. La mayoría se vio obligada a conservar una gran compatibilidad con los controles ASCII para la interoperabilidad. El estándar hace que ESC, SP y DEL sean "fijos" caracteres codificados, que están disponibles en sus ubicaciones ASCII en todas las codificaciones que cumplen con el estándar. También especifica que si un conjunto C0 incluye códigos de control de transmisión (TCn), deben codificarse en sus ubicaciones ASCII y no pueden colocarse en un conjunto C1, y cualquier nuevo control de transmisión debe estar en un juego C1.
Otros conjuntos de códigos de control C0
- ANPA-1312, un lenguaje de marcado de texto utilizado para la transmisión de noticias, reemplaza varios caracteres de control C0.
- IPTC 7901, la versión internacional más reciente de lo anterior, tiene sus propias variaciones.
- Videotex tiene un conjunto completamente diferente.
- Teletext también define un conjunto similar al Videotex.
- T.61/T.51, y otros sustituyeron EM y GS por SS2 y SS3 para que estas funciones pudieran utilizarse en un entorno de 7 bits.
- Algunos conjuntos sustituyeron FS con SS2, (igual que ANPA-1312).
- The now-withdrawn JIS C 6225, designated JIS X 0207 in later sources. FS reemplazado por CEX o "Extensión de Control" que introduce secuencias de control para el comportamiento vertical de texto, superscriptos y subscriptos y para la transmisión de gráficos de caracteres personalizados.
Juegos de caracteres C1 de reemplazo
- Se registra un código de control C1 especializado para uso bibliográfico (incluyendo la colación de cadenas), como el MARC-8.
- Varios conjuntos de códigos de control C1 especializados están registrados para su uso por formatos de Videotex.
- EBCDIC define hasta 29 códigos de control adicionales además de los presentes en ASCII. Al traducir EBCDIC a Unicode (o a ISO 8859), estos códigos se mapean a caracteres de control C1 de una manera especificada por IBM's Character Data Representation Architecture (CDRA). Aunque la Nueva Línea (NL) se traduce en la ISO/IEC 6429 NEL (aunque a menudo se intercambia con LF, siguiendo la convención final de la línea UNIX), el resto de los códigos de control no corresponden. Por ejemplo, el SPS de control EBCDIC y el control ECMA-48 PLU ambos se utilizan para comenzar un superscript o terminar un subscript, pero no se mapean entre sí. EBCDIC de tamaño extendido puede considerarse por lo tanto tener su propio conjunto C1, aunque no está registrado con el registro ISO-IR para ISO/IEC 2022.
Unicode
Unicode hereda sus primeros 256 puntos de código de ISO 8859-1, de ahí también los 65 puntos de código descritos anteriormente, dándoles la categoría general Cc
(control). Estos son:
- U+0000–U+001 F (Controles C0) y U+007F (DEL) asignado al bloque latino básico, y
- U+0080–U+009F (Controles C1) asignados al bloque Suplemento latino-1.
Unicode sólo especifica la semántica para los controles de formato C0 HT, LF, VT, FF y CR (nota que falta BS); los separadores de información C0 FS, GS, RS, US (y SP); y el control C1 NEL. El resto de los códigos son transparentes para Unicode y sus significados se dejan a protocolos de nivel superior, con ISO/IEC 6429 sugerido como predeterminado.
Unicode incluye muchos caracteres efectores de formato adicionales además de estos, como marcas, incrustaciones, aislamientos y pops para formato bidireccional explícito, y el conector y no conector de ancho cero para controlar el uso de ligaduras. Sin embargo, estos reciben la categoría general Cf
(formato) en lugar de Cc
.