stringtranslate.com

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 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 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 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, más un carácter adicional necesario para el carácter DEL, 7F HEX o 01111111 BIN (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.

Sólo unos pocos códigos han mantenido su uso: BEL, ESC y los caracteres "Format Effector" (FE n ) 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" (IS n ), como el formato de información de Unix [1] y el método de cadena de líneas divididas de Python . [2]

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

  1. ^ Teletipo etiquetó la clave WRU para "¿quién eres?" [6]
  2. ^ Unicode asigna el nombre BELL 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 chocó con el uso existente de BELL como nombre de este carácter de control en el software que seguía 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 el cuadro de códigos todavía incluye a BELL como el alias ISO 6429, [10] y se llama al punto de código de imagen de control correspondiente SÍMBOLO DE CAMPANA. Posteriormente, Perl pasó a utilizar BELL para los 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ó 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 ISO C ni de muchas otras especificaciones de lenguaje. Sin embargo, varios compiladores lo entienden, incluido GCC .

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 correspondiente de 7 bits, y viceversa . [18] En un entorno de 7 bits, Shift Out ( SO ) cambiaría el significado de los 96 bytes 0x20 a 0x7F [a] [20] (es decir, todos los códigos de control excepto C0), para que sean los caracteres que un 8 El entorno de bits se imprimiría si usara el mismo código con el bit alto configurado. 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 podí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 debían considerarse equivalentes. [18] Los estándares ISO 8859 posteriores abandonaron el soporte para códigos de 7 bits, pero conservaron esta gama 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 , [21] un conjunto especializado para uso bibliográfico que se registró en 1979. [22]

El conjunto 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 basó se publicó por primera vez en 1976 [24] y JIS X 0211 (anteriormente JIS C 6323). [25] También se utilizan 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 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 .

  1. ^ En las primeras versiones, la gama excluía SP y DEL [19]
  2. ^ abc No forma parte de ISO/IEC 6429 (ECMA-48) [8] [26]
  3. ^ abcd No forma parte de la primera edición de ISO/IEC 6429. [23]
  4. ^ Obsoleto en 1988 y retirado en 1992 de ISO/IEC 6429 (1986 y 1991 respectivamente para ECMA-48). [ cita necesaria ]

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 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 ésta está prácticamente obsoleta. La mayoría se vio obligada a conservar una gran compatibilidad con los controles ASCII para la interoperabilidad. El estándar convierte ESC, [34] [35] SP y DEL [a] caracteres codificados "fijos", que están disponibles en sus ubicaciones ASCII en todas las codificaciones que cumplen con el estándar. [37] También especifica que si un conjunto C0 incluye códigos de control de transmisión (TC n ), deben codificarse en sus ubicaciones ASCII [34] y no pueden colocarse en un conjunto C1, [38] y cualquier nuevo control de transmisión debe estar en un conjunto C1. [34]

Otros conjuntos de códigos de control C0

Juegos de caracteres C1 de reemplazo

Unicódigo

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:

Unicode solo 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. [49] 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. [49]

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, a estos se les asigna la categoría general (formato) en lugar de .CfCc

Ver también

Notas a pie de página

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

Referencias

  1. ^ Zorro, Brian . "Agregar un nuevo nodo a Información". Información: El sistema de documentación GNU en línea controlado por menús . Proyecto GNU .
  2. ^ "Tipos integrados § str.splitlines". La biblioteca estándar de Python . Fundación de software Python .
  3. ^ ab ISO/TC 97/SC 2 (1975). El conjunto de caracteres de control de la ISO 646 (PDF) . ITSCJ/ IPSJ . ISO-IR -1.{{citation}}: Mantenimiento CS1: 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. ^ ab Robert McConnell; James Haynes; Richard Warren (diciembre de 2002). "Comprensión de los códigos ASCII". NADCOM .
  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 personales". Documentación de programación en Perl .
  12. ^ ECMA (1994). "7.3: Invocación de elementos de código de juego de caracteres". Técnicas de extensión y estructura de códigos de caracteres (PDF) (Estándar ECMA) (6ª ed.). pag. 14. ECMA-35.
  13. ^ Asociación Estadounidense de Estándares (1963). Código estándar americano para el intercambio de información: 4. Leyenda. pag. 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 complementarias (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 punto de Ctrl-S?". Intercambio de pilas Unix y Linux . Consultado el 14 de febrero de 2019 .
  17. ^ ECMA/TC 1 (1973). "Breve historia". Juego de caracteres codificados de entrada/salida de 7 bits (PDF) (4ª ed.). ECMA . ECMA-6:1973.{{citation}}: Mantenimiento CS1: nombres numéricos: lista de autores ( enlace )
  18. ^ abcECMA/TC 1 (1971). "8.2: Correspondencia entre el Código de 7 bits y un Código de 8 bits". Ampliación del juego de caracteres codificados de 7 bits (PDF) (1ª ed.). ECMA . págs. 21-24. ECMA-35:1971.{{citation}}: Mantenimiento CS1: nombres numéricos: lista de autores ( enlace )
  19. ^ ECMA/TC 1 (1973). "4.2: Caracteres de control específicos". Juego de caracteres codificados de entrada/salida de 7 bits (PDF) (4ª ed.). ECMA . pag. 16. ECMA-6:1973.{{citation}}: Mantenimiento CS1: 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}}: Mantenimiento CS1: nombres numéricos: lista de autores ( enlace )
  21. ^ abc Registro internacional ISO/IEC de juegos de caracteres codificados para utilizar con secuencias de escape (PDF) , ITSCJ/ IPSJ , ISO-IR
  22. ^ abDIN ( 15 de julio de 1979). Códigos de Control Adicionales para Uso Bibliográfico según Norma Alemana DIN 31626 (PDF) . ITSCJ/ IPSJ . ISO-IR -40.
  23. ^ a b C ISO / TC97 / SC2 (1 de octubre de 1983). Conjunto de controles C1 de la norma ISO 6429:1983 (PDF) . ITSCJ/ IPSJ . ISO-IR -77.{{citation}}: Mantenimiento CS1: nombres numéricos: lista de autores ( enlace )
  24. ^ 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.{{citation}}: Mantenimiento CS1: nombres numéricos: lista de autores ( enlace )
  25. ^ "JIS X 02xx 符号" (en japonés).
  26. ^ ab Ken Whistler (5 de octubre de 2015). "Por qué nada desaparece". Lista de correo Unicode .
  27. ^ ECMA (1991). Funciones de control para juegos de caracteres codificados . Estándar ECMA-48.
  28. ^ Lunde, Ken (2008). Procesamiento de información CJKV: informática china, japonesa, coreana y vietnamita. O'Reilly. pag. 244.ISBN _ 9780596800925.
  29. ^ "Recursos del widget VT100 (§ hpLowerleftBugCompat)". xterm: emulador de terminal para X.
  30. ^ Moy, Eduardo; Gildea, Esteban; Dickey, Thomas. "Funciones de control de dispositivos". Secuencias de control XTerm .
  31. ^ ab Brender, Ronald F. (1989). "Informe del proyecto Ada 9x: problemas con el conjunto de caracteres de Ada 9x". Universidad de Carnegie mellon .
  32. ^ Moy, Eduardo; Gildea, Esteban; Dickey, Thomas. "Comandos del sistema operativo". Secuencias de control XTerm .
  33. ^ Frank da Cruz; Cristina Gianone (1997). Usando C-Kermit. Prensa Digital. pag. 278.ISBN _ 978-1-55558-164-0.
  34. ^ abcECMA (1994). "6.4.2: Conjuntos primarios de funciones de control codificadas". Técnicas de extensión y estructura de códigos de caracteres (PDF) (Estándar ECMA) (6ª ed.). pag. 11. ECMA-35.
  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.{{citation}}: Mantenimiento CS1: nombres numéricos: lista de autores ( enlace )
  36. ^ 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}}: Mantenimiento CS1: nombres numéricos: lista de autores ( enlace )
  37. ^ ECMA (1994). "6.2: Caracteres codificados fijos". Técnicas de extensión y estructura de códigos de caracteres (PDF) (Estándar ECMA) (6ª ed.). pag. 7. ECMA-35.
  38. ^ ECMA (1994). "6.4.3: Conjuntos suplementarios de funciones de control codificadas". Técnicas de extensión y estructura de códigos de caracteres (PDF) (Estándar ECMA) (6ª ed.). pag. 11. ECMA-35.
  39. ^ UIT (1985). Conjunto primario de funciones de control Teletex (PDF) . ITSCJ/ IPSJ . ISO-IR -106.
  40. ^ Úř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.
  41. ^ 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}}: Mantenimiento CS1: nombres numéricos: lista de autores ( enlace )
  42. ^ 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 26 de octubre de 2020.{{cite web}}: Mantenimiento CS1: nombres numéricos: lista de autores ( enlace )
  43. ^ ISO/TC 97/SC 2 (1982). El conjunto C0 de caracteres de control del estándar japonés JIS C 6225-1979 (PDF) . ITSCJ/ IPSJ . ISO-IR -74.{{citation}}: Mantenimiento CS1: nombres numéricos: lista de autores ( enlace )
  44. ^ Printronix (2012). Manual de referencia del programador de OKI® (PDF) . pag. 26.
  45. ^ ISO/TC 46 (1 de junio de 1983). Códigos de Control Adicionales para Uso Bibliográfico según Norma Internacional ISO 6630 (PDF) . ITSCJ/ IPSJ . ISO-IR -67.{{citation}}: Mantenimiento CS1: nombres numéricos: lista de autores ( enlace )
  46. ^ ISO/TC 46 (1 de febrero de 1986). Códigos de Control Adicionales para Uso Bibliográfico según Norma Internacional ISO 6630 (PDF) . ITSCJ/ IPSJ . ISO-IR -124.{{citation}}: Mantenimiento CS1: nombres numéricos: lista de autores ( enlace )
  47. ^ 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 DELETE ASCII (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 EBCDIC Line Feed y New Los caracteres de control de línea se intercambian desde sus emparejamientos predeterminados de CDRA a caracteres de control de avance de línea ISO/IEC 6429 (U+000A) y siguiente línea (U+0085).
  48. ^ Steele, Shawn (24 de abril de 1996). cp037_IBMUSCadana a tabla Unicode. Consorcio Microsoft / Unicode .
  49. ^ ab "23.1: Códigos de control" (PDF) . El estándar Unicode (12.0.0 ed.). Consorcio Unicode . 2019, págs. 868–870. ISBN 978-1-936213-22-1.