Códigos de control C0 y C1

format_list_bulleted Contenido keyboard_arrow_down
ImprimirCitar
Personajes de control, desde U+0000 a U+001F (C0) y U+0080 a U+009F (C1) en Unicode

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).

Códigos de control ASCII, definidos originalmente en ANSI X3.4.
Notación profesional
Decimal
Hexadecimal
Abreviaturas
Signatura
Nombre
C escape
Descripción
^@000NUL.NullNo hace nada. El código de la cinta de papel en blanco, y también se utiliza para padding para la transmisión lenta.
^ A101TC1, SOHInicio de HeadingPrimer personaje del encabezado de un mensaje.
^ B202TC2, STXInicio del textoTermina el encabezado y comienza el texto del mensaje.
^C303TC3, ETXFin del textoFinaliza el texto del mensaje, comienza un pie de página (hasta el siguiente personaje TC).
^D404TC4, EOTFin de la transmisiónTermina la transmisión de uno o más mensajes. Puede colocar terminales en espera.
^ E505TC5, ENQ, WRUPreguntaIntente una respuesta en el extremo receptor, para ver si sigue presente.
^ F606TC6, ACKReconocimientoIndicación de la recepción exitosa de un mensaje.
^ G707BELBell, AlertaLlamar a la atención de un operador.
^ H808FE0, BSBackspacebMueva una posición hacia la izquierda. El siguiente personaje puede sobreimprimir o reemplazar el personaje que estaba allí.
^ I909FE1, HTTabulación de caracteres,
Tabulación horizontal
tMuévete a la siguiente parada.
^J100AFE2, LFLínea de alimentaciónnMuévete a la misma posición en la siguiente línea (algunos dispositivos también se trasladaron a la columna izquierda).
^K110BFE3, VTTabulación de línea,
Tabulación vertical
vMuévete a la siguiente parada de pestaña vertical.
^ L120CFE4, FFForma FeedfMuévete a la parte superior de la página siguiente.
^M130DFE5, CR.Carriage ReturnrMuévete a la columna cero mientras te quedas en la misma línea.
^ N140EAsí que, LS0CambioCambiar a un conjunto de caracteres alternativo.
^ O150FSI, LS1CambioRegrese al carácter regular establecido después de SO.
^P1610TC7, DC0, DLEEnlace de datos EscapeCausar un número limitado de caracteres seguidos contiguamente para ser interpretado de alguna manera diferente.
^ Q1711DC1, XONControl 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.

^ R1812DC2, TAPEControl de dispositivos Dos.
^ S1913DC3, XOFFControl de dispositivos Tres.
^ T2014DC4, TAPEControl de dispositivos Cuatro
^ U2115TC8, NAKReconocimiento negativoRespuesta negativa a un remitente, como un error detectado.
^V2216TC9, SYNSincrónico IdleSe envía en sistemas de transmisión sincronizados cuando no se transmite ningún otro personaje.
^ W2317TC10, ETBFin del bloque de transmisiónFin de un bloque de transmisión de datos cuando los datos se dividen en tales bloques para fines de transmisión.
^ X2418CANCancelarIndica que los datos anteriores están en error o deben ser ignorados.
^ Y2519EMFin del medioIndica en papel o cintas magnéticas que se había alcanzado el final de la parte utilizable de la cinta.
^Z261ASUBSubstitutoReemplaza un personaje que se encontró inválido o en error. Debería ser ignorado.
^271BESCEscape 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.
^281CES4, SM Separador de archivosSe 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.
^]291DES3, SGSeparador de grupo
^301EES2, RSSeparador de discos
^_311FES1, Estados UnidosSeparador 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.
3220SPEspacioMueva a la derecha una posición de carácter.
^?1277FDELSuprimirDebería ser ignorado. Solía eliminar caracteres en la cinta perforada golpeando todos los agujeros.
  1. ^ Teletipo etiquetado la llave WRU para '¿quién eres? '
  2. ^ 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.
  3. ^ 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.
  4. ^ 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").
  5. ^ 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.

Códigos de control ISO/IEC 6429 y RFC 1345 C1
ESC+
Decimal
Hex
Abbr NombreDescripción
@12880PADCará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.
A12981HOPHigh Octet PresetSe 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.
B13082BPHPermiso 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.
C13183NBHNo hay descanso aquíSigue el carácter gráfico que no debe ser roto. Vea también la palabra ensamblador.
D13284INDÍndiceMuévete una línea sin mover la horzón, para eliminar la ambigüedad sobre el significado de LF.
E13385NELNext LineEquivalente a CR+LF, para que coincida con el carácter de control EBCDIC.
F13486SSAInicio del área seleccionadaUtilizado por terminales de bloques. En xterm ESC F pasa a la esquina inferior izquierda de la pantalla, ya que cierto software asume este comportamiento.
G13587ESAFin del área seleccionada
H13688HTS
  • Conjunto de tabulación de caracteres
  • Conjunto de tabulación horizontal
Establecer una parada de pestañas en la posición actual.
I13789HTJ
  • Tabulación de caracteres con justificación
  • Tabulación horizontal con justificación
Justifique el texto desde la última pestaña en contra de la siguiente pestaña parar.
J1388AVTS
  • Tabulación de líneas Set
  • Tabulación vertical Set
Establecer una parada de pestaña vertical.
K1398BPLD
  • Línea parcial hacia adelante
  • Línea parcial
Para producir subscriptos y superscriptos en ISO/IEC 6429.
Uso de subscriptos PLD text PLU mientras que los superscriptos usan PLU text PLD.
L1408CPLU
  • Partial Line Backward
  • Línea parcial
M1418DRI
  • Línea inversa
  • Índice
Muévete una línea.
N1428ESS2Single-Shift 2El siguiente personaje es de los conjuntos G2 o G3, respectivamente.
O1438FSS3Single-Shift 3
P14490DCSCierre de control de dispositivosSeguido 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.
Q14591PU1Uso privado 1Reservada para función privada acordada entre el remitente y el destinatario de los datos.
R14692PU2Uso privado 2
S14793STSEstado de transmisión
T14894CCHCancelar carácterBackspace destructivo, para eliminar la ambigüedad sobre el significado de BS.
U14995MWMensaje esperando
V15096SPAInicio de Área ProtegidaUtilizado por terminales de bloques.
W15197EPAFin de la zona protegida
X15298SOSInicio de la cuerdaSeguido 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.
Y15399SGC, SGCIPresentació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.
Z1549ASCIPersonaje único IntroducerPara 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.
[1559BCSIControl Sequence IntroducerSe utiliza para introducir secuencias de control que toman parámetros. Usado para secuencias de escape ANSI.
1569CSTString TerminatorTermina una cadena iniciada por DCS, SOS, OSC, PM o APC.
]1579DOSCMando del Sistema OperativoSeguido 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.

^1589EPMPrivacidad
¿Qué?1599FAPCApplication Program Command
  1. ^ En versiones tempranas el rango excluido SP y DEL
  2. ^ a b c No es parte de ISO/IEC 6429 (ECMA-48)
  3. ^ a b c d No es parte de la primera edición de ISO/IEC 6429.
  4. ^ 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.

Más resultados...
Tamaño del texto:
undoredo
format_boldformat_italicformat_underlinedstrikethrough_ssuperscriptsubscriptlink
save