Los conjuntos de códigos de control C0 y C1 definen códigos de control para su uso en texto por sistemas informáticos que utilizan ASCII y sus derivados. Estos códigos representan información adicional sobre el texto, como la posición del cursor, una instrucción para iniciar una nueva línea o un mensaje que indica que el texto ha sido recibido.
Los códigos C0 abarcan el rango 00 HEX –1F HEX , y el conjunto C0 predeterminado se definió originalmente en la norma ISO 646 ( ASCII ). Los códigos C1 abarcan el rango 80 HEX –9F HEX , y el conjunto C1 predeterminado se definió originalmente en la norma ECMA-48 (armonizada posteriormente con la norma ISO 6429). El sistema ISO/IEC 2022 para la especificación de caracteres de control y gráficos permite que otros conjuntos C0 y C1 estén disponibles para aplicaciones especializadas, pero rara vez se utilizan.
Controles C0
ASCII define 32 caracteres de control, además del carácter DEL. Esta gran cantidad de códigos era deseable en aquel entonces, ya que los controles multibyte requerirían la implementación de una máquina de estados en el terminal, lo cual era muy difícil con los terminales electrónicos y mecánicos de la época.
Solo unos pocos códigos han mantenido su uso: BEL, ESC y los caracteres del efector de formato [ 1 ] (FE n ) BS, HT, LF, VT, FF y CR. Otros no se utilizan o han adquirido significados diferentes, como NUL, que es el terminador de cadena de 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" (IS n ), como el formato info de Unix [ 2 ] y el método de cadena splitlines de Python . [ 3 ]
En la norma ISO 6429:1992 (o ECMA-48:1991), los nombres de algunos códigos se modificaron para que fueran neutros con respecto a la dirección de escritura. Las abreviaturas utilizadas no se modificaron, ya que la norma especificaba que permanecerían sin cambios al traducirse a otros idiomas. En esta tabla se muestran tanto los nombres nuevos como los antiguos de los controles renombrados (el nombre antiguo es el que coincide con la abreviatura).
Unicode proporciona imágenes de control que pueden reemplazar los caracteres de control C0 para hacerlos visibles en pantalla. Sin embargo, la notación con circunflejo se usa con más frecuencia.
- ↑ El teletipo etiquetó la tecla WRU por '¿quién eres?' [ 7 ]
- ↑ Unicode asigna el nombre BELL al carácter no relacionado U+1F514 🔔 BELL . Si bien los caracteres de control C0 y C1 no fueron nombrados formalmente por el estándar Unicode en ese momento, esto entró en conflicto con el uso existente de BELL como nombre de este carácter de control en software que seguía las versiones anteriores de UTS#18 (el estándar de expresiones regulares de Unicode), [ 8 ] por ejemplo en Perl . [ 9 ] Unicode ahora acepta ALERT y BEL (pero no BELL) como alias formales para el carácter de control, [ 10 ] aunque la tabla de códigos todavía enumera BELL como el alias ISO 6429, [ 11 ] y el punto de código de imagen de control correspondientese llama SÍMBOLO PARA BELL. Perl posteriormente cambió a usar BELL para U+1F514 en la versión 5.18. [ 12 ]
- ↑ MS-DOS y sus derivados se refieren a esto como TAB, según la tabla en la Ayuda de QBASIC, el significado es el mismo: tabulación (horizontal).
- ↑ MS-DOS y sus derivados se refieren a esto como NP (Página siguiente), según la tabla en la Ayuda de QBASIC, el significado es el mismo: moverse hacia abajo a la parte superior de la página siguiente.
- 1 2 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. [ 13 ]
- ↑ La primera edición de ASCII de 1963 clasificó a DLE como un control de dispositivo, en lugar de un control de transmisión, y le dio la abreviatura DC0 ("control de dispositivo reservado para escape de enlace de datos"). [ 14 ]
- ↑ La secuencia de escape ' \e ' no forma parte de ISO C ni de muchas otras especificaciones de lenguaje. Sin embargo, es comprendida por varios compiladores, incluido GCC .
Controles C1
En 1973, ECMA-35 e ISO 2022 [ 18 ] intentaron definir un método para que un código "ASCII extendido" de 8 bits pudiera convertirse en un código correspondiente de 7 bits, y viceversa . [ 19 ] En un entorno de 7 bits, el Shift Out ( SO ) cambiaría el significado de los 96 bytes 0x20 a 0x7F [ a ] [ 21 ] (es decir, todos excepto los códigos de control C0), para ser los caracteres que un entorno de 8 bits imprimiría si utilizara el mismo código con el bit más significativo activado. Esto significaba que el rango 0x80 a 0x9F no podía imprimirse en un entorno de 7 bits, [ 19 ] por lo que se decidió que ningún conjunto de caracteres alternativo podría utilizarlos, y que estos códigos deberían ser códigos de control adicionales, que se conocieron como códigos de control C1 . Para permitir que un entorno de 7 bits utilizara estos nuevos controles, las secuencias a través de debían considerarse equivalentes. [ 19 ] Las normas ISO 8859 posteriores abandonaron el soporte para códigos de 7 bits, pero conservaron este rango de caracteres de control.ESC @ESC _
El primer conjunto de códigos de control C1 que se registró para su uso con ISO 2022 fue DIN 31626 , [ 22 ] un conjunto especializado para uso bibliográfico que se registró en 1979. [ 23 ]
El conjunto ISO/IEC 6429 de uso general más común se registró en 1983, [ 24 ] aunque la especificación ECMA-48 en la que se basaba se había publicado por primera vez en 1976 [ 25 ] y JIS X 0211 (anteriormente JIS C 6323). [ 26 ] También se utilizan nombres simbólicos definidos por RFC 1345 y borradores iniciales de ISO 10646, pero no en ISO/IEC 6429 ( PAD , HOP y SGC ). [ 9 ] [ 27 ]
Excepto para 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 usaban. CSI , DCS y OSC se usan para controlar terminales de texto y emuladores de terminal , pero casi siempre usando 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 estén destinados a imprimir caracteres desde esa posición de Windows-1252 o Mac OS Roman .
Excepto para NEL , Unicode no proporciona una "imagen de control" para ninguno de estos caracteres. Tampoco existe una variante conocida de la notación Caret para ellos.
- ↑ En versiones anteriores, el rango excluía SP y DEL [ 20 ]
- 1 2 3 No forma parte de ISO/IEC 6429 (ECMA-48) [ 9 ] [ 27 ] [ 29 ] : 4 [ 30 ] : 5 [ 31 ] : 8
- 1 2 3 4 No forma parte de la primera edición de ISO/IEC 6429. [ 24 ] [ 29 ] : 4
- ↑ Obsoleto en 1988 y retirado en 1992 de ISO/IEC 6429 [ 31 ] : 87 (1986 [ 33 ] y 1991 [ 34 ] respectivamente para ECMA-48).
Otros conjuntos de códigos de control
El mecanismo de extensión ISO/IEC 2022 (ECMA-35) permitió que las secuencias de escape cambiaran los conjuntos C0 y C1. El conjunto de caracteres de control C0 estándar que se muestra arriba se elige con la secuencia y el conjunto C1 anterior se elige con la secuencia . [ 24 ]ESC ! @ESC " C
Se han definido varias alternativas oficiales y no oficiales, pero esto está prácticamente obsoleto. La mayoría se vieron obligados a mantener una buena compatibilidad con los controles ASCII para la interoperabilidad. El estándar convierte a ESC, [ 41 ] [ 42 ] SP y DEL [ a ] en caracteres codificados "fijos", que están disponibles en sus ubicaciones ASCII en todas las codificaciones que cumplen con el estándar. [ 44 ] También especifica que si un conjunto C0 incluye códigos de control de transmisión (TC n ), estos deben estar codificados en sus ubicaciones ASCII [ 41 ] y no podrían colocarse en un conjunto C1, [ 45 ] y cualquier nuevo control de transmisión debe estar en un conjunto C1. [ 41 ]
Conjuntos de caracteres C0 alternativos
- ANPA-1312 , un lenguaje de marcado de texto utilizado para la transmisión de noticias, reemplaza varios caracteres de control C0.
- La IPTC 7901 , la versión internacional más reciente de la anterior, tiene sus propias variaciones.
- Videotex tiene un conjunto completamente diferente.
- Teletexto también define un conjunto similar a Videotex.
- T.61 / T.51 , [ 46 ] y otros [ 47 ] reemplazaron EM y GS con SS2 y SS3 para que estas funciones pudieran usarse en un entorno de 7 bits sin recurrir a secuencias de escape .
- Algunos conjuntos reemplazaron FS con SS2, [ 48 ] (igual que ANPA-1312).
- La ahora retirada JIS C 6225, designada JIS X 0207 en fuentes posteriores. [ 49 ] reemplazó FS con CEX o "Extensión de control" [ 50 ] que introduce secuencias de control para el comportamiento del texto vertical, superíndices y subíndices [ 51 ] y para transmitir gráficos de caracteres personalizados . [ 49 ]
Conjuntos de caracteres C1 alternativos
- Se registra un conjunto de códigos de control C1 especializado para uso bibliográfico (incluida la intercalación de cadenas), como por ejemplo MARC-8 . [ 23 ] [ 52 ] [ 53 ]
- Se han registrado varios conjuntos de códigos de control C1 especializados para su uso por formatos Videotex . [ 22 ]
- El sistema operativo Stratus VOS utiliza un conjunto C1 llamado conjunto de control NLS . [ 54 ] Incluye los controles SS1 (Single-Shift 1) a SS15 (Single-Shift 15), [ 55 ] utilizados para invocar caracteres individuales de conjuntos de caracteres suplementarios predefinidos, [ 56 ] de manera similar al mecanismo de cambio único de ISO/IEC 2022. Los únicos controles de cambio único definidos por ISO/IEC 2022 son SS2 y SS3; estos se conservan en el conjunto VOS en sus puntos de código originales y funcionan de la misma manera.
- 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 asignan a caracteres de control C1 de una manera especificada por la Arquitectura de Representación de Datos de Caracteres (CDRA) de IBM. [ 57 ] [ 58 ] Aunque el salto de línea (NL) se traduce al NEL de ISO/IEC 6429 (aunque a menudo se intercambia con LF, siguiendo la convención de fin de línea de UNIX), [ 57 ] el resto de los códigos de control no se corresponden. Por ejemplo, el control SPS de EBCDIC y el control PLU de ECMA-48 se utilizan para comenzar un superíndice o terminar un subíndice, pero no se asignan entre sí. Por lo tanto, se puede considerar que EBCDIC con asignación a ASCII extendido tiene su propio conjunto C1, aunque no está registrado en el registro ISO-IR para ISO/IEC 2022. [ 22 ]
Unicode
Unicode reserva los 65 puntos de código descritos anteriormente para la compatibilidad con los códigos de control C0 y C1, otorgándoles la categoría generalCc (control). Estos son:
- U+0000–U+001F (controles C0) y U+007F (DEL) asignados al bloque de Controles C0 y Latín Básico , y
- U+0080–U+009F (controles C1) asignados al bloque de Controles C1 y Suplemento Latin-1 .
Unicode solo especifica la semántica para los controles de formato C0 HT, LF, VT, FF y CR (nótese que falta BS); los separadores de información C0 FS, GS, RS, US (y SP); y el control C1 NEL. [ 59 ] El resto de los códigos son transparentes para Unicode y sus significados se dejan a protocolos de nivel superior, sugiriéndose ISO/IEC 6429 como predeterminado. [ 59 ]
Unicode incluye muchos caracteres de efector de formato adicionales además de estos, como marcas, incrustaciones, aislados y pops para formato bidireccional explícito, y el conector de ancho cero y el no conector para controlar el uso de ligaduras. Sin embargo, a estos se les da la categoría general Cf(formato) en lugar de Cc.
Véase también
- Imágenes de control : caracteres de representación gráfica Unicode para los códigos de control C0.
- Código de escape ANSI
Notas a pie de página
- ↑ ISO/IEC 4873 extiende este requisito a C1 SS2 y SS3, [ 43 ] aunque ISO/IEC 2022 no lo hace.
Referencias
- ↑ Conjunto de caracteres codificados estándar ECMA-6 de 7 bits (PDF) (Informe técnico). 1965. pág. 4.
- ↑ Fox, Brian . "Añadiendo un nuevo nodo a Info" . Info: El sistema de documentación GNU en línea, basado en menús . Proyecto GNU .
- ↑ "Tipos integrados § str.splitlines" . La biblioteca estándar de Python . Python Software Foundation .
- 1 2 ISO/TC 97/SC 2 (1975). El conjunto de caracteres de control de la ISO 646 (PDF) . ITSCJ/ IPSJ . ISO-IR -1.
- ^ IPTC (1995 ) . El formato de mensaje recomendado por IPTC (PDF) (5ª ed.). IPTC TEC 7901.
- 1 2 3 "carácter de fin de transmisión (EOT)" . Norma Federal 1037C . 1996. Archivado del original el 9 de marzo de 2016.
- 1 2 Robert McConnell; James Haynes; Richard Warren (diciembre de 2002). "Entendiendo los códigos ASCII" . NADCOMM .
- ↑ Williamson, Karl. "Re: PRI #202: Extensiones a NameAliases.txt para Unicode 6.1.0" .
- 1 2 3 Ken Whistler (20 de julio de 2011). "Alias de nombres formales para caracteres de control, L2/11-281" . Consorcio Unicode .
- 1 2 3 4 "Alias de nombre" . Base de datos de caracteres Unicode . Consorcio Unicode .
- ↑ "Controles C0 y latín básico" (PDF) . Consorcio Unicode.
- ↑ "charnames" . Documentación de programación en Perl .
- 1 2 3 ECMA (1994). "7.3: Invocación de elementos de código de conjunto de caracteres". Estructura de código de caracteres y técnicas de extensión (PDF) (Estándar ECMA) (6.ª ed.). pág. 14. ECMA-35.
- ↑ Asociación Estadounidense de Estándares (1963). Código estándar estadounidense para el intercambio de información: 4. Leyenda . pág. 6. ASA X3.4-1963.
- ↑ "Carácter de escape de enlace de datos (DLE)" . Norma Federal 1037C . 1996. Archivado del original el 1 de agosto de 2016.
- ↑ "Funciones suplementarias de control de transmisión (una extensión de los procedimientos básicos de control de modo para sistemas de comunicación de datos)" . Asociación Europea de Fabricantes de Computadoras . 1972. ECMA-37.
- ↑ "¿Para qué sirve Ctrl-S?" . Unix and Linux Stack Exchange . Consultado el 14 de febrero de 2019 .
- ↑ ECMA/TC 1 (1973). "Breve historia". Conjunto de caracteres codificados de entrada/salida de 7 bits (PDF) (4.ª ed.). ECMA . ECMA-6:1973.
- 1 2 3 ECMA/TC 1 (1971). "8.2: Correspondencia entre el código de 7 bits y un código de 8 bits". Extensión del conjunto de caracteres codificados de 7 bits (PDF) (1.ª ed.). ECMA . págs. 21–24 . ECMA-35:1971.
- ↑ ECMA/TC 1 (1973). "4.2: Caracteres de control específicos". Conjunto de caracteres codificados de entrada/salida de 7 bits (PDF) (4.ª ed.). ECMA . pág. 16. ECMA-6:1973.
- ↑ ECMA/TC 1 (1985). "5.3.8: Conjuntos de 96 caracteres gráficos". Técnicas de extensión de código (PDF) (4.ª ed.). ECMA . págs. 17–18 . ECMA-35:1985.
- 1 2 3 Registro internacional ISO/IEC de conjuntos de caracteres codificados para ser utilizados con secuencias de escape (PDF) , ITSCJ/ IPSJ , ISO-IR, archivado del original (PDF) el 12/05/2023 , recuperado el 13/05/2023
- 1 2 DIN (15-07-1979). Códigos de control adicionales para uso bibliográfico según la norma alemana DIN 31626 (PDF) . ITSCJ/ IPSJ . ISO-IR -40.
- 1 2 3 ISO/TC97/SC2 (1983-10-01). Conjunto de control C1 de ISO 6429:1983 (PDF) . ITSCJ/ IPSJ . ISO-IR -77.
- ↑ ECMA/TC 1 (1979). "Breve historia". Funciones de control adicionales para dispositivos de E/S de imágenes de caracteres (PDF) (2.ª ed.). ECMA . ECMA-48:1979.
- ^ "JIS X 02xx 符号" (en japonés).
- 1 2 Ken Whistler (2015-10-05). "Por qué nada desaparece jamás" . Lista de correo de Unicode .
- ↑ ECMA/TC 1 (junio de 1991). Funciones de control para conjuntos de caracteres codificados (PDF) (5.ª ed.). ECMA . ECMA-48:1991.
- 1 2 ISO 6429:1983 Procesamiento de información — Conjuntos de caracteres codificados ISO de 7 y 8 bits — Funciones de control adicionales para dispositivos de imágenes de caracteres . ISO . 1983-05-01.
- ↑ ISO 6429:1988 Procesamiento de la información: funciones de control para conjuntos de caracteres codificados de 7 y 8 bits . ISO . 15 de noviembre de 1988.
- 1 2 ISO/IEC 6429:1992 Tecnología de la información — Funciones de control para conjuntos de caracteres codificados . ISO . 15-12-1992 . Recuperado el 29-05-2024 .
- ↑ Lunde, Ken (2008). Procesamiento de la información CJKV: Informática china, japonesa, coreana y vietnamita . O'Reilly. pág. 244. ISBN 9780596800925.
- ↑ ECMA/TC 1 (diciembre de 1986). «Apéndice E: Cambios realizados en esta edición». Funciones de control para conjuntos de caracteres codificados (PDF) (4.ª ed.). ECMA . ECMA-48:1986.
- ↑ ECMA/TC 1 (junio de 1991). "F.8 Funciones de control eliminadas". Funciones de control para conjuntos de caracteres codificados (PDF) (5.ª ed.). ECMA . ECMA-48:1991.
- ↑ "Recursos del widget VT100 (§ hpLowerleftBugCompat)" . xterm - emulador de terminal para X.
- ↑ Moy, Edward; Gildea, Stephen; Dickey, Thomas. "Funciones de control de dispositivos" . Secuencias de control de XTerm .
- 1 2 Brender, Ronald F. (1989). "Informe del proyecto Ada 9x: Problemas con el conjunto de caracteres para Ada 9x" . Universidad Carnegie Mellon .
- ↑ Moy, Edward; Gildea, Stephen; Dickey, Thomas. "Comandos del sistema operativo" . Secuencias de control de XTerm .
- ↑ Frank da Cruz; Christine Gianone (1997). Uso de C-Kermit . Digital Press. pág. 278. ISBN 978-1-55558-164-0.
- ↑ "Protocolo de gráficos de terminal" . kitty . Consultado el 12 de mayo de 2026 .
- 1 2 3 ECMA (1994). "6.4.2: Conjuntos primarios de funciones de control codificadas". Estructura del código de caracteres y técnicas de extensión (PDF) (Estándar ECMA) (6.ª ed.). pág. 11. ECMA-35.
- ^ ISO/TC97/SC2/WG-7 ; ECMA (1 de agosto de 1985). C0 mínimo establecido para ISO 4873 (PDF) . ITSCJ/ IPSJ . ISO-IR -104.
- ^ ISO/TC97/SC2/WG-7 ; ECMA (1 de agosto de 1985). Conjunto mínimo de C1 para ISO 4873 (PDF) . ITSCJ/ IPSJ . ISO-IR -105.
- ↑ ECMA (1994). "6.2: Caracteres codificados fijos". Estructura del código de caracteres y técnicas de extensión (PDF) (Estándar ECMA) (6.ª ed.). pág. 7. ECMA-35.
- ↑ ECMA (1994). "6.4.3: Conjuntos suplementarios de funciones de control codificadas". Estructura de códigos de caracteres y técnicas de extensión (PDF) (Estándar ECMA) (6.ª ed.). pág. 11. ECMA-35.
- ↑ UIT (1985). Conjunto primario de funciones de control de Teletex (PDF) . ITSCJ/ IPSJ . ISO-IR -106.
- ↑ Úřad pro normalizaci a měřeni (1987). El conjunto de caracteres de control de ISO 646, con EM reemplazado por SS2 (PDF) . ITSCJ/ IPSJ . ISO-IR -140.
- ↑ ISO/TC 97/SC 2 (1977). El conjunto de caracteres de control de ISO 646, con IS4 reemplazado por Single Shift para G2 (SS2) (PDF) . ITSCJ/ IPSJ . ISO-IR -36.
- 1 2 ISO/TC97/SC2/WG6 . "Declaración de enlace con ISO/TC97/SC2/WG8 e ISO/TC97/SC18/WG8" (PDF) . ISO/TC97/SC2/WG6 N317.rev. Archivado del original (PDF) el 26-10-2020.
- ↑ ISO/TC 97/SC 2 (1982). El conjunto C0 de caracteres de control de la norma japonesa JIS C 6225-1979 (PDF) . ITSCJ/ IPSJ . ISO-IR -74.
- ↑ Printronix (2012). Manual de referencia del programador de OKI® (PDF) . pág. 26.
- ↑ ISO/TC 46 (1983-06-01). Códigos de control adicionales para uso bibliográfico según la norma internacional ISO 6630 (PDF) . ITSCJ/ IPSJ . ISO-IR -67.
- ↑ ISO/TC 46 (1986-02-01). Códigos de control adicionales para uso bibliográfico según la norma internacional ISO 6630 (PDF) . ITSCJ/ IPSJ . ISO-IR -124.
- ↑ Stratus Technologies Ireland, Ltd. "Descripción general de las cadenas NLS" . Guía del usuario de soporte de idiomas nacionales (R212) .
- ↑ Stratus Technologies Ireland, Ltd. "El conjunto de códigos de caracteres internos de OpenVOS" . Administración del sistema OpenVOS: Administración y personalización de un sistema (R281) .
- ↑ Stratus Technologies Ireland, Ltd. "Los conjuntos de caracteres gráficos suplementarios" . Guía del usuario de soporte de idiomas nacionales (R212) .
- 1 2 Umamaheswaran, VS (1999-11-08). "3.3 Paso 2: Conversión de bytes" . UTF-EBCDIC . Consorcio Unicode . Informe técnico Unicode n.° 16.
Los 64 caracteres de control [...], el carácter ASCII DELETE (U+007F)[...] se asignan respetando las convenciones EBCDIC, tal como se definen en la arquitectura de representación de datos de caracteres de IBM, CDRA, con una excepción: el emparejamiento de los caracteres de control de salto de línea y nueva línea de EBCDIC se intercambia con respecto a sus emparejamientos predeterminados de CDRA por los caracteres de control de salto de línea (U+000A) y siguiente línea (U+0085) de ISO/IEC 6429.
- ↑ Steele, Shawn (1996-04-24). cp037_IBMUSCanada a tabla Unicode . Microsoft / Consorcio Unicode .
- 1 2 "23.1: Códigos de control" (PDF) . El estándar Unicode ( ed. 15.0.0 ). Consorcio Unicode . 2022. págs. 914–916 . ISBN 978-1-936213-32-0.
Enlaces externos
- El estándar Unicode
- Controles C0 y latín básico
- Controles C1 y suplemento Latin-1
- Imágenes de control
- El estándar Unicode, versión 6.1.0, capítulo 16: áreas especiales y caracteres de formato
- Glosario de telecomunicaciones de ATIS 2007
- De litteris regentibus C1 quaestiones septem o ¿ Son legales los caracteres C1 en XHTML 1.0?
- Preguntas frecuentes sobre internacionalización (I18N) del W3C: HTML, XHTML, XML y códigos de control.
- Registro internacional de conjuntos de caracteres codificados para usar con secuencias de escape. Archivado el 12 de mayo de 2023 en Wayback Machine.
- Personajes de control