stringtranslate.com

Códigos de control C0 y C1

Los códigos de control o conjuntos de caracteres de control C0 y C1 definen códigos de control para su uso en texto por parte de 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 iniciar una nueva línea o un mensaje de que se ha recibido el texto.

Los códigos C0 están en el rango 00 HEX – 1F HEX y el conjunto C0 predeterminado se definió originalmente en ISO 646 ( ASCII ). Los códigos C1 están en el rango 80 HEX – 9F HEX y el conjunto C1 predeterminado se definió originalmente en ECMA-48 (armonizado posteriormente con ISO 6429). El sistema ISO/IEC 2022 de especificación de 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 define 32 caracteres de control, más un carácter extra necesario para el carácter DEL, 7F HEX o 01111111 BIN (necesario para perforar todos los agujeros en una cinta de papel y borrarla).

Esta gran cantidad de códigos era deseable en ese momento, ya que los controles multibyte requerirían la implementación de una máquina de estados en la terminal, lo que era muy difícil con la electrónica y los terminales mecánicos contemporáneos.

Sólo unos pocos códigos han mantenido su uso: BEL, ESC y los caracteres "efector de formato" (FE n ) BS, TAB, 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 con el fin de aproximarse a sus definiciones originales; y algunos formatos de archivo utilizan los "separadores de información" (IS n ) como el formato info de Unix [1] y el método de cadena splitlines de Python . [2]

En la norma ISO 6429:1992 (o ECMA-48:1991) se cambiaron los nombres de algunos códigos para que fueran neutrales con respecto a la dirección de escritura. Las abreviaturas utilizadas no se cambiaron, ya que la norma ya había especificado que permanecerían inalteradas cuando la norma se tradujera 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).

Unicode proporciona imágenes de control que pueden reemplazar los caracteres de control C0 para que sean visibles en la pantalla. Sin embargo, la notación de cursor se utiliza con más frecuencia.

  1. ^ El teletipo etiquetó la clave WRU como "¿quién eres?" [6]
  2. ^ El nombre BELL es asignado por Unicode al carácter emoji no relacionado 🔔 (U+1F514). Si bien los caracteres de control C0 y C1 no fueron nombrados formalmente por el estándar Unicode en ese momento, esto colisionó con el uso existente de BELL como el nombre de este carácter de control en el software después de las versiones anteriores de UTS#18 (el estándar de expresiones regulares Unicode), [7] por ejemplo en Perl . [8] Unicode ahora acepta ALERT y BEL (pero no BELL) como alias formales para el carácter de control, [9] aunque la tabla de códigos aún enumera a BELL como el alias ISO 6429, [10] y el punto de código de imagen de control correspondiente se llama SÍMBOLO PARA BELL. Posteriormente, Perl cambió al uso de BELL para el emoji en la versión 5.18. [11]
  3. ^ ab 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. [12]
  4. ^ 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"). [13]
  5. ^ 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 .

Controles C1

En 1973, ECMA-35 e ISO 2022 [17] intentaron definir un método para que un código "ASCII extendido" de 8 bits pudiera convertirse en un código de 7 bits correspondiente, y viceversa . [18] En un entorno de 7 bits, el Shift Out ( SO ) cambiaría el significado de los 96 bytes 0x20 a 0x7F [a] [20] (es decir, todos menos los códigos de control C0), para que sean los caracteres que un entorno de 8 bits imprimiría si usara el mismo código con el bit alto establecido. Esto significaba que el rango 0x80 a 0x9F no podía imprimirse en un entorno de 7 bits, [18] por lo que se decidió que ningún conjunto de caracteres alternativo podría usarlos, y que estos códigos deberían ser códigos de control adicionales, que se conocen como los códigos de control C1 . Para permitir que un entorno de 7 bits usara estos nuevos controles, las secuencias a se considerarían equivalentes. [18] 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 la norma ISO 2022 fue el DIN 31626 , [21] un conjunto especializado para uso bibliográfico que se registró en 1979. [22]

El conjunto de normas ISO/IEC 6429 de uso general más común se registró en 1983, [23] aunque la especificación ECMA-48 en la que se basaba se había publicado por primera vez en 1976 [24] y JIS X 0211 (anteriormente JIS C 6323). [25] También se utilizan los nombres simbólicos definidos por RFC  1345 y los primeros borradores de ISO 10646, pero no en ISO/IEC 6429 ( PAD , HOP y SGC ). [8] [26]

A excepción de SS2 y SS3 en texto EUC-JP , y NEL en texto transcodificado desde EBCDIC , las formas de 8 bits de estos códigos casi nunca se usaron. CSI , DCS y OSC se utilizan para controlar terminales de texto y emuladores de terminal , pero casi siempre mediante el uso de 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 .

A excepción de NEL, Unicode no proporciona una "imagen de control" para ninguno de ellos. Tampoco existe una variación conocida de la notación Caret para ellos.

  1. ^ En las primeras versiones, el rango excluía SP y DEL [19]
  2. ^ abc No forma parte de ISO/IEC 6429 (ECMA-48) [8] [26] [28] : 4  [29] : 5  [30] : 8 
  3. ^ abcd No forma parte de la primera edición de ISO/IEC 6429. [23] [28] : 4 
  4. ^ Obsoleto en 1988 y retirado en 1992 de ISO/IEC 6429 [30] : 87  (1986 [32] y 1991 [33] 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 ESC ! @y el conjunto C1 anterior se elige con la secuencia ESC " C. [23]

Se han definido varias alternativas oficiales y no oficiales, pero esta es bastante obsoleta. La mayoría se vieron obligadas a mantener una buena parte de la compatibilidad con los controles ASCII para lograr la interoperabilidad. El estándar convierte a ESC, [39] [40] 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. [42] También especifica que si un conjunto C0 incluye códigos de control de transmisión (TC n ), deben codificarse en sus ubicaciones ASCII [39] y no pueden colocarse en un conjunto C1, [43] y cualquier nuevo control de transmisión debe estar en un conjunto C1. [39]

Otros conjuntos de códigos de control de C0

Conjuntos de caracteres de reemplazo C1

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 general Cc (control). Son los siguientes:

Unicode sólo 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. [54] El resto de los códigos son transparentes para Unicode y sus significados se dejan a los protocolos de nivel superior, con ISO/IEC 6429 sugerido como predeterminado. [54]

Unicode incluye muchos otros caracteres efectores de formato además de estos, como marcas, incrustaciones, aislamientos 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, se les asigna la categoría general Cf(formato) en lugar de Cc.

Véase también

Notas al pie

  1. ^ La norma ISO/IEC 4873 extiende este requisito a C1 SS2 y SS3, [41] aunque la propia ISO/IEC 2022 no lo hace.

Referencias

  1. ^ Fox, Brian . "Añadir un nuevo nodo a Info". Info: El sistema de documentación de GNU en línea y basado en menús . Proyecto GNU .
  2. ^ "Tipos integrados § str.splitlines". La biblioteca estándar de Python . Python Software Foundation .
  3. ^ ab ISO/TC 97/SC 2 (1975). El conjunto de caracteres de control de la norma ISO 646 (PDF) . ITSCJ/ IPSJ . ISO-IR -1.{{citation}}: CS1 maint: nombres numéricos: lista de autores ( enlace )
  4. ^ abc IPTC (1995). El formato de mensaje recomendado por IPTC (PDF) (5ª ed.). IPTC TEC 7901.
  5. ^ abc "carácter de fin de transmisión (EOT)". Norma federal 1037C . 1996. Archivado desde el original el 9 de marzo de 2016.
  6. ^ por Robert McConnell; James Haynes; Richard Warren (diciembre de 2002). "Comprensión de los códigos ASCII". NADCOMM .
  7. ^ Williamson, Karl. "Re: PRI #202: Extensiones de NameAliases.txt para Unicode 6.1.0".
  8. ^ abc Ken Whistler (20 de julio de 2011). "Alias ​​de nombres formales para caracteres de control, L2/11-281". Consorcio Unicode .
  9. ^ abcd "Alias ​​de nombres". Base de datos de caracteres Unicode . Consorcio Unicode .
  10. ^ "Controles C0 y latín básico" (PDF) . Consorcio Unicode.
  11. ^ "nombres de caracteres". Documentación de programación en Perl .
  12. ^ abc ECMA (1994). "7.3: Invocación de elementos de código de conjunto de caracteres". Character Code Structure and Extension Techniques (PDF) (Estándar ECMA) (6.ª ed.). pág. 14. ECMA-35.
  13. ^ Asociación Estadounidense de Normas (1963). Código Estándar Estadounidense para el Intercambio de Información: 4. Leyenda. pág. 6. ASA X3.4-1963.
  14. ^ "Carácter de escape de enlace de datos (DLE)". Norma federal 1037C . 1996. Archivado desde el original el 1 de agosto de 2016.
  15. ^ "Funciones de control de transmisión suplementarias (una extensión de los procedimientos de control de modo básico para sistemas de comunicación de datos)". Asociación Europea de Fabricantes de Computadoras . 1972. ECMA-37.
  16. ^ "¿Cuál es el sentido de Ctrl+S?". Unix and Linux Stack Exchange . Consultado el 14 de febrero de 2019 .
  17. ^ ECMA/TC 1 (1973). "Breve historia". Conjunto de caracteres codificados de entrada/salida de 7 bits (PDF) (4.ª ed.). ECMA . ECMA-6:1973.{{citation}}: CS1 maint: nombres numéricos: lista de autores ( enlace )
  18. ^ abc 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.{{citation}}: CS1 maint: nombres numéricos: lista de autores ( enlace )
  19. ^ 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.{{citation}}: CS1 maint: nombres numéricos: lista de autores ( enlace )
  20. ^ 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.{{citation}}: CS1 maint: nombres numéricos: lista de autores ( enlace )
  21. ^ abc ISO/IEC Registro internacional de conjuntos de caracteres codificados para su uso con secuencias de escape (PDF) , ITSCJ/ IPSJ , ISO-IR
  22. ^ ab DIN (1979-07-15). Códigos de control adicionales para uso bibliográfico según la norma alemana DIN 31626 (PDF) . ITSCJ/ IPSJ . ISO-IR -40.
  23. ^ abc ISO/TC97/SC2 (1983-10-01). Conjunto de control C1 de ISO 6429:1983 (PDF) . ITSCJ/ IPSJ . ISO-IR -77.{{citation}}: CS1 maint: nombres numéricos: lista de autores ( enlace )
  24. ^ ECMA/TC 1 (1979). "Breve historia". Funciones de control adicionales para dispositivos de E/S de creación de imágenes de caracteres (PDF) (2.ª ed.). ECMA . ECMA-48:1979.{{citation}}: CS1 maint: nombres numéricos: lista de autores ( enlace )
  25. ^ "JIS X 02xx 符号" (en japonés).
  26. ^ por Ken Whistler (5 de octubre de 2015). "Por qué nada desaparece jamás". Lista de correo Unicode .
  27. ^ ECMA/TC 1 (junio de 1991). Funciones de control para conjuntos de caracteres codificados (PDF) (5.ª ed.). ECMA . ECMA-48:1991.{{cite book}}: CS1 maint: nombres numéricos: lista de autores ( enlace )
  28. ^ ab ISO 6429:1983 Procesamiento de información — Conjuntos de caracteres codificados ISO de 7 y 8 bits — Funciones de control adicionales para dispositivos de formación de imágenes de caracteres. ISO . 1983-05-01.
  29. ^ ISO 6429:1988 Procesamiento de información — Funciones de control para conjuntos de caracteres codificados de 7 y 8 bits. ISO . 1988-11-15.
  30. ^ ab ISO/IEC 6429:1992 Tecnología de la información — Funciones de control para conjuntos de caracteres codificados. ISO . 1992-12-15 . Consultado el 29 de mayo de 2024 .
  31. ^ Lunde, Ken (2008). Procesamiento de información CJKV: computación china, japonesa, coreana y vietnamita. O'Reilly. pág. 244. ISBN 9780596800925.
  32. ^ 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.{{cite book}}: CS1 maint: nombres numéricos: lista de autores ( enlace )
  33. ^ 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.{{cite book}}: CS1 maint: nombres numéricos: lista de autores ( enlace )
  34. ^ "Recursos del widget VT100 (§ hpLowerleftBugCompat)". xterm - emulador de terminal para X .
  35. ^ Moy, Edward; Gildea, Stephen; Dickey, Thomas. "Funciones de control de dispositivos". Secuencias de control de XTerm .
  36. ^ ab Brender, Ronald F. (1989). "Informe del proyecto Ada 9x: problemas con el conjunto de caracteres para Ada 9x". Universidad Carnegie Mellon .
  37. ^ Moy, Edward; Gildea, Stephen; Dickey, Thomas. "Comandos del sistema operativo". Secuencias de control de XTerm .
  38. ^ Frank da Cruz; Christine Gianone (1997). Utilizando C-Kermit. Digital Press. pág. 278. ISBN 978-1-55558-164-0.
  39. ^ abc ECMA (1994). "6.4.2: Conjuntos primarios de funciones de control codificadas". Character Code Structure and Extension Techniques (PDF) (Estándar ECMA) (6.ª ed.). pág. 11. ECMA-35.
  40. ^ ISO/TC97/SC2/WG-7 ; ECMA (1 de agosto de 1985). C0 mínimo establecido para ISO 4873 (PDF) . ITSCJ/ IPSJ . ISO-IR -104.{{citation}}: CS1 maint: nombres numéricos: lista de autores ( enlace )
  41. ^ 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.{{citation}}: CS1 maint: nombres numéricos: lista de autores ( enlace )
  42. ^ ECMA (1994). "6.2: Caracteres codificados fijos". Estructura del código de caracteres y técnicas de extensión (PDF) (norma ECMA) (6.ª ed.). pág. 7. ECMA-35.
  43. ^ ECMA (1994). "6.4.3: Conjuntos suplementarios de funciones de control codificadas". Character Code Structure and Extension Techniques (PDF) (Estándar ECMA) (6.ª ed.). pág. 11. ECMA-35.
  44. ^ UIT (1985). Conjunto primario de funciones de control del teletex (PDF) . ITSCJ/ IPSJ . ISO-IR -106.
  45. ^ Úř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.
  46. ^ 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.{{citation}}: CS1 maint: nombres numéricos: lista de autores ( enlace )
  47. ^ ab 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 desde el original (PDF) el 2020-10-26.{{cite web}}: CS1 maint: nombres numéricos: lista de autores ( enlace )
  48. ^ 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.{{citation}}: CS1 maint: nombres numéricos: lista de autores ( enlace )
  49. ^ Printronix (2012). Manual de referencia del programador de OKI® (PDF) . pág. 26.
  50. ^ 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.{{citation}}: CS1 maint: nombres numéricos: lista de autores ( enlace )
  51. ^ 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.{{citation}}: CS1 maint: nombres numéricos: lista de autores ( enlace )
  52. ^ ab Umamaheswaran, VS (8 de noviembre de 1999). "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 define en IBM Character Data Representation Architecture, CDRA, con una excepción: el emparejamiento de los caracteres de control de avance de línea y nueva línea EBCDIC se intercambia de sus emparejamientos predeterminados de CDRA a los caracteres de control de avance de línea (U+000A) y siguiente línea (U+0085) ISO/IEC 6429
  53. ^ Steele, Shawn (24 de abril de 1996). Tabla cp037_IBMUSCanada a Unicode. Microsoft / Unicode Consortium .
  54. ^ ab "23.1: Códigos de control" (PDF) . El estándar Unicode (edición 15.0.0). Consorcio Unicode . 2022. págs. 914–916. ISBN 978-1-936213-32-0.