ISO / IEC 2022 estructura de información Tecnología de código de caracteres y de extensión técnicas , es una ISO estándar (equivalente a la ECMA estándar ECMA-35 , [1] [2] el ANSI estándar ANSI X3.41 [3] y el Japanese Industrial Standard JIS X 0202 ) especificando:
- Una infraestructura de múltiples juegos de caracteres con estructuras particulares que pueden incluirse en un único sistema de codificación de caracteres , incluidos múltiples juegos de caracteres gráficos y múltiples juegos de códigos de control tanto primarios (C0) como secundarios (C1) , [4]
- Un formato para codificar estos conjuntos, asumiendo que hay 8 bits disponibles por byte, [5]
- Un formato para codificar estos conjuntos en el mismo sistema de codificación cuando solo están disponibles 7 bits por byte, [6] y un método para transformar cualquier dato de carácter conforme para que pase a través de un entorno de 7 bits, [7]
- La estructura general de los códigos de escape ANSI , [8] y
- Formatos de códigos de escape específicos para identificar conjuntos de caracteres individuales, [9] para anunciar el uso de características o subconjuntos de codificación particulares, [10] y para interactuar o cambiar a otros sistemas de codificación. [10]
Idioma (s) | Varios. |
---|---|
Estándar | ISO / IEC 2022, ECMA-35, ANSI X3.41, JIS X 0202 |
Clasificación | Stateful sistema de codificaciones (con subconjuntos pre-configurados sin estado) |
Transforma / Codifica | US-ASCII y, dependiendo de la implementación: |
Sucesor | ISO 10646 ( Unicode ) |
Otras codificaciones relacionadas | Subconjuntos con estado : ISO-2022-JP , ISO-2022-CN , ISO-2022-KR Versiones preconfiguradas : ISO 4873 , EUC |
Muchos de los juegos de caracteres incluidos como codificaciones ISO / IEC 2022 son codificaciones de 'doble byte' donde dos bytes corresponden a un solo carácter. Esto hace que ISO-2022 sea una codificación de ancho variable. Pero una implementación específica no tiene que implementar todo el estándar; el nivel de conformidad y los juegos de caracteres soportados están definidos por la implementación.
Aunque muchos de los mecanismos definidos por la norma ISO / IEC 2022 se utilizan con poca frecuencia, varias codificaciones establecidas se basan en un subconjunto del sistema ISO / IEC 2022. [11] En particular, los sistemas de codificación de 7 bits que utilizan mecanismos ISO / IEC 2022 incluyen ISO-2022-JP (o codificación JIS ), que se ha utilizado principalmente en el correo electrónico en japonés . Los sistemas de codificación de 8 bits que cumplen con ISO / IEC 2022 incluyen ISO / IEC 4873 (ECMA-43), que a su vez está conforme con ISO / IEC 8859 , [12] [13] y el Código Unix extendido , que se utiliza para Oriente. Idiomas asiáticos . [14] Las aplicaciones más especializadas de ISO 2022 incluyen el sistema de codificación MARC-8 utilizado en los registros de la biblioteca MARC 21 . [3]
Introducción
Muchos idiomas o familias de idiomas que no se basan en el alfabeto latino , como el griego , cirílico , árabe o hebreo, se han representado históricamente en computadoras con diferentes codificaciones ASCII extendidas de 8 bits . Los idiomas escritos de Asia Oriental , específicamente el chino , el japonés y el coreano , utilizan muchos más caracteres de los que se pueden representar en un byte de computadora de 8 bits y se representaron por primera vez en computadoras con codificaciones de doble byte específicas del idioma .
ISO / IEC 2022 se desarrolló como una técnica para atacar estos dos problemas: representar caracteres en múltiples conjuntos de caracteres dentro de una única codificación de caracteres y representar grandes conjuntos de caracteres.
Un segundo requisito de ISO-2022 era que debería ser compatible con canales de comunicación de 7 bits. Entonces, aunque ISO-2022 es un conjunto de caracteres de 8 bits, cualquier secuencia de 8 bits se puede volver a codificar para usar solo 7 bits sin pérdida y, normalmente, solo un pequeño aumento de tamaño.
Para representar múltiples juegos de caracteres, las codificaciones de caracteres ISO / IEC 2022 incluyen secuencias de escape que indican el juego de caracteres para los caracteres que siguen. Las secuencias de escape están registradas con ISO y siguen los patrones definidos en el estándar. Estas codificaciones de caracteres requieren que los datos se procesen secuencialmente en una dirección hacia adelante, ya que la interpretación correcta de los datos depende de las secuencias de escape encontradas previamente. Sin embargo, tenga en cuenta que otros estándares como ISO-2022-JP pueden imponer condiciones adicionales, como que el conjunto de caracteres actual se restablezca a US-ASCII antes del final de una línea.
Para representar grandes conjuntos de caracteres, ISO / IEC 2022 se basa en la propiedad de ISO / IEC 646 de que un carácter de siete bits normalmente definirá 94 caracteres gráficos (imprimibles) (además del espacio y 33 caracteres de control). Usando dos bytes, es posible representar hasta 8.836 (94 × 94) caracteres; y, utilizando tres bytes, hasta 830.584 (94 × 94 × 94) caracteres. Aunque el estándar lo define, ningún juego de caracteres registrado utiliza tres bytes (aunque el G2 no registrado de EUC-TW sí lo hace). Para los juegos de caracteres de dos bytes, el punto de código de cada carácter se especifica normalmente en la forma llamada kuten (japonés:区 点) (a veces llamado qūwèi (chino:区 位), especialmente cuando se trata de GB2312 y estándares relacionados), que especifica una zona (区, japonés: ku , chino: qū ) y el punto (japonés:点 diez ) o posición (chino:位 wèi ) de ese carácter dentro de la zona.
Por lo tanto, las secuencias de escape no solo declaran qué juego de caracteres se está utilizando, sino que también, al conocer las propiedades de estos juegos de caracteres, saber si una codificación de 94, 96, 8,836 u 830,584 caracteres (o algún otro tamaño) se está tratando.
En la práctica, las secuencias de escape que declaran los juegos de caracteres nacionales pueden estar ausentes si el contexto o la convención dicta que se va a utilizar un determinado juego de caracteres nacionales. Por ejemplo, ISO-8859-1 establece que no se necesita definir una secuencia de escape y RFC 1922, que define ISO-2022-CN, permite el uso de caracteres SHIFT ISO-2022 sin el uso explícito de secuencias de escape.
Las definiciones ISO-2022 de los conjuntos de caracteres ISO-8859-X son combinaciones fijas específicas de los componentes que forman ISO-2022. Específicamente, los caracteres de control inferiores (C0), el conjunto de caracteres US-ASCII (en GL) y los caracteres de control superiores (C1) son estándar y los caracteres superiores (GR) se definen para cada una de las variantes ISO-8859-X; por ejemplo, ISO-8859-1 se define [ cita requerida ] por la combinación de ISO-IR-1, ISO-IR-6, ISO-IR-77 e ISO-IR-100 sin cambios ni cambios de caracteres permitidos.
Aunque los conjuntos de caracteres ISO / IEC 2022 que utilizan secuencias de control todavía son de uso común, particularmente ISO-2022-JP, la mayoría de las aplicaciones de correo electrónico modernas se están convirtiendo para usar las transformaciones Unicode más simples , como UTF-8 . Las codificaciones que no utilizan secuencias de control, como los conjuntos ISO-8859, siguen siendo muy comunes.
Estructura de código
Nomenclatura y notación
La codificación ISO / IEC 2022 especifica un mapeo de dos capas entre los códigos de caracteres y los caracteres mostrados. Las secuencias de escape permiten que cualquiera de un gran registro de conjuntos de caracteres gráficos sea "designado" [15] en uno de los cuatro conjuntos de trabajo, denominados G0 a G3, y las secuencias de control más cortas especifican el conjunto de trabajo que se "invoca" [16] para interpretar bytes en la secuencia.
Los valores de bytes de codificación ("combinaciones de bits") a menudo se dan en notación de línea de columna , donde dos números decimales en el rango 00-15 (cada uno correspondiente a un solo dígito hexadecimal) están separados por una barra. [17] Por tanto, por ejemplo, los códigos 2/0 (0x20) a 2/15 (0x2F) inclusive pueden denominarse "columna 02". Esta es la notación utilizada en la propia norma ISO / IEC 2022 / ECMA-35. [18] Pueden describirse en otra parte usando hexadecimal , como se usa a menudo en este artículo, o usando los caracteres ASCII correspondientes, [19] aunque las secuencias de escape se definen realmente en términos de valores de bytes, y el gráfico asignado a ese valor de byte puede alterarse sin afectar la secuencia de control.
Los valores de bytes del rango gráfico ASCII de 7 bits (hexadecimal 0x20–0x7F), que se encuentran en el lado izquierdo de una tabla de códigos de caracteres, se denominan códigos "GL" (donde "GL" significa "gráficos izquierdos") mientras que bytes del rango "ASCII alto" (0xA0–0xFF), si están disponibles (es decir, en un entorno de 8 bits), se denominan códigos "GR" ("gráficos a la derecha") . [20] Los términos "CL" (0x00–0x1F) y "CR" (0x80-0x9F) se definen para los rangos de control, pero el rango CL siempre invoca los controles primarios (C0), mientras que el rango CR siempre invoca el controles secundarios (C1) o no se utiliza. [20]
Caracteres codificados fijos
El carácter de eliminación DEL (0x7F), el carácter de escape ESC (0x1B) y el carácter de espacio SP (0x20) se designan como caracteres codificados "fijos" [21] y siempre están disponibles cuando se invoca G0 sobre GL, independientemente de los conjuntos de caracteres designado. Es posible que no se incluyan en los conjuntos de caracteres gráficos, aunque sí pueden estarlo otros tamaños o tipos de caracteres de espacio en blanco . [22]
Sintaxis general de las secuencias de escape
Las secuencias que usan el carácter ESC (escape) toman la forma , donde el carácter ESC va seguido de cero o más bytes intermedios [23] ( I ) del rango 0x20–0x2F, y un byte final [24] ( F ) del rango 0x30–0x7E. [25]ESC [I...] F
El primer byte I , o la ausencia del mismo, determina el tipo de secuencia de escape; podría, por ejemplo, designar un conjunto de trabajo o denotar una única función de control. En todos los tipos de secuencias de escape, los bytes F en el rango 0x30–0x3F están reservados para usos privados no registrados definidos por acuerdo previo entre las partes. [26]
Conjuntos de caracteres gráficos
Cada uno de los cuatro conjuntos de trabajo G0 G3 puede ser a través de un conjunto de 94 caracteres o un 94 n -character conjunto de múltiples bytes . Además, G1 a G3 puede ser un conjunto de 96 o 96 n caracteres.
En un conjunto de 96 o 96 n caracteres, los bytes 0x20 a 0x7F cuando se invoca a GL, o 0xA0 a 0xFF cuando se invoca a GR, se asignan y pueden ser utilizados por el conjunto. En un juego de 94 o 94 n caracteres, los bytes 0x20 y 0x7F no se utilizan. [27] Cuando se invoca un conjunto de 96 o 96 n caracteres en la región GL, el espacio y los caracteres de eliminación (códigos 0x20 y 0x7F) no están disponibles hasta que un conjunto de 94 o 94 n caracteres (como el conjunto G0 ) se invoca en GL. [20] Los conjuntos de 96 caracteres no se pueden designar a G0.
El registro de un conjunto como un conjunto de 96 caracteres no significa necesariamente que los bytes 0x20 / A0 y 0x7F / FF estén realmente asignados por el conjunto; Algunos ejemplos de conjuntos de caracteres gráficos que se registran como 96 conjuntos pero que no utilizan esos bytes incluyen el conjunto G1 de IS 434 , [28] el conjunto de dibujos de caja de ISO / IEC 10367 , [29] e ISO-IR-164 ( un subconjunto del conjunto G1 de ISO-8859-8 con solo las letras, utilizado por CCITT ). [30]
Combinando personajes
Se espera que los caracteres sean espaciados, no combinaciones de caracteres, a menos que el conjunto gráfico en cuestión especifique lo contrario. [31] ISO 2022 / ECMA-35 también reconoce el uso de los caracteres de control de retroceso y retorno de carro como medio para combinar caracteres de otro modo espaciados, así como la secuencia CSI "Combinación de caracteres gráficos" (GCC) [31] ( CSI 0x20 (SP) 0x5F (_)
). [32]
El uso de retroceso y retorno de carro de esta manera está permitido por ISO / IEC 646 pero prohibido por ISO / IEC 4873 / ECMA-43 [33] y por ISO / IEC 8859 , [34] [35] sobre la base de que deja el repertorio de caracteres gráficos indefinido. Sin embargo, ISO / IEC 4873 / ECMA-43 permite el uso de la función GCC sobre la base de que la secuencia de caracteres se mantiene igual y simplemente se muestra en un espacio, en lugar de estar sobreimpreso para formar un carácter con un significado diferente. [36]
Controlar conjuntos de caracteres
Los juegos de caracteres de control se clasifican como juegos de caracteres de control "primarios" o "secundarios", [37] respectivamente también llamados juegos de caracteres de control "C0" y "C1". [38]
Un conjunto de control C0 debe contener el carácter de control ESC (escape) en 0x1B [39] (un conjunto C0 que contiene solo ESC se registra como ISO-IR-104), [40] mientras que un conjunto de control C1 no puede contener el control de escape en absoluto . [27] Por lo tanto, son registros completamente separados, con un conjunto C0 que es sólo un conjunto C0 y un conjunto C1 es sólo un conjunto C1. [38]
Si los códigos del conjunto C0 de ISO 6429 / ECMA-48, es decir, los códigos de control ASCII , aparecen en el conjunto C0, deben aparecer en sus ubicaciones ISO 6429 / ECMA-48. [39] Inclusión de caracteres de control de transmisión en el conjunto C0, además de los diez incluidos en ISO 6429 / ECMA-48 (a saber, SOH, STX, ETX, EOT, ENQ, ACK, DLE, NAK, SYN y ETB), [41] o la inclusión de cualquiera de esos diez en el conjunto C1, también está prohibido por la norma ISO / IEC 2022 / ECMA-35. [39] [27]
Un conjunto de control C0 se invoca en el rango CL 0x00 a 0x1F, [42] mientras que un carácter de control C1 puede invocarse en el rango CR 0x80 a 0x9F (en un entorno de 8 bits) o mediante el uso de secuencias de escape (en un 7- entorno de bits o de 8 bits), [37] pero no ambos. El estilo de invocación C1 que se utiliza debe especificarse en la definición de la versión del código. [43] Por ejemplo, ISO / IEC 4873 especifica bytes CR para los controles C1 (SS2 y SS3) que utiliza. [44] Si es necesario, la invocación que se utilice puede comunicarse mediante secuencias de anunciador .
En el último caso, los caracteres de control individuales del conjunto de caracteres de control C1 se invocan utilizando secuencias de escape "tipo Fe", [27] es decir, aquellas en las que el carácter de control ESC va seguido de un byte de las columnas 04 o 05 (es decir, ESC 0x40 (@)
a través ESC 0x5F (_)
). [45]
Otras funciones de control
Se asignan funciones de control adicionales a las secuencias de escape "tipo Fs" (en el rango ESC 0x60 (`)
hasta ESC 0x7E (~)
); estos tienen significados asignados permanentemente en lugar de depender de las designaciones C0 o C1. [45] [46] El registro de funciones de control para secuencias de tipo "Fs" debe ser aprobado por ISO / IEC JTC 1 / SC 2 . [46] Se pueden registrar otras funciones de control único para escribir secuencias de escape "3Ft" (en el rango hasta ), [47] aunque actualmente no se asignan secuencias "3Ft" (a partir de 2019). [48]ESC 0x23 (#) [I...] 0x40 (@)
ESC 0x23 (#) [I...] 0x7E (~)
Las siguientes secuencias de escape se asignan para funciones de control individuales: [48]
Código | Maleficio | Abbr. | Nombre | Efecto |
---|---|---|---|---|
ESC ` | 1B 60 | DMI | Deshabilitar la entrada manual | Desactiva algunas o todas las funciones de entrada manual del dispositivo. |
ESC a | 1B 61 | EN T | Interrumpir | Interrumpe el proceso actual. |
ESC b | 1B 62 | EMI | Habilitar la entrada manual | Habilita las funciones de entrada manual del dispositivo. |
ESC c | 1B 63 | RIS | Restablecer al estado inicial | Restablece el dispositivo a su estado después de encenderlo. |
ESC d | 1B 64 | CMD | Delimitador del método de codificación | Se utiliza al interactuar con un sistema de representación / codificación externo, ver más abajo. |
ESC n | 1B 6E | LS2 | Bloquear el turno dos | Función de cambio, ver más abajo. |
ESC o | 1B 6F | LS3 | Bloqueo del turno tres | Función de cambio, ver más abajo. |
ESC | | 1B 7C | LS3R | Bloqueando el turno tres a la derecha | Función de cambio, ver más abajo. |
ESC } | 1B 7D | LS2R | Bloqueo del cambio dos a la derecha | Función de cambio, ver más abajo. |
ESC ~ | 1B 7E | LS1R | Bloquear el cambio uno a la derecha | Función de cambio, ver más abajo. |
Las secuencias de escape de tipo "Fp" ( ESC 0x30 (0)
hasta ESC 0x3F (?)
) o de tipo "3Fp" ( hasta ) están reservadas para códigos de control de uso privado único, previo acuerdo entre las partes. [49] Varias de estas secuencias de ambos tipos son utilizadas por terminales DEC como el VT100 y, por lo tanto, son compatibles con emuladores de terminales . [50]ESC 0x23 (#) [I...] 0x30 (0)
ESC 0x23 (#) [I...] 0x3F (?)
Funciones de turno
De forma predeterminada, los códigos GL especifican caracteres G0 y los códigos GR (si están disponibles) especifican caracteres G1; esto puede especificarse de otro modo mediante acuerdo previo. El conjunto invocado sobre cada área también puede modificarse con códigos de control denominados turnos, como se muestra en la tabla siguiente. [51]
Un código de 8 bits puede tener códigos GR que especifican caracteres G1, es decir, con su código de 7 bits correspondiente utilizando Shift In y Shift Out para cambiar entre los conjuntos (por ejemplo, JIS X 0201 ), [52] aunque algunos tienen códigos GR que especifican G2 caracteres, con el código de 7 bits correspondiente utilizando un código de turno único para acceder al segundo conjunto (por ejemplo, T.51 ). [53]
Los códigos que se muestran en la tabla siguiente son las codificaciones más comunes de estos códigos de control, de conformidad con ISO / IEC 6429 . Los cambios LS2, LS3, LS1R, LS2R y LS3R se registran como funciones de control único y siempre se codifican como las secuencias de escape que se enumeran a continuación, [48] mientras que los demás son parte de un conjunto de códigos de control C0 o C1 (como se muestra a continuación, SI (LS0) y SO (LS1) son controles C0 y SS2 y SS3 son controles C1), lo que significa que su codificación y disponibilidad pueden variar según los conjuntos de control designados: deben estar presentes en los conjuntos de control designados si se utiliza su funcionalidad. . [42] [43] Los propios controles C1, como se mencionó anteriormente, pueden representarse usando secuencias de escape o bytes de 8 bits, pero no ambos.
Las codificaciones alternativas de los cambios simples como códigos de control C0 están disponibles en ciertos conjuntos de códigos de control. Por ejemplo, SS2 y SS3 suelen estar disponibles en 0x19 y 0x1D respectivamente en T.51 [53] y T.61 . [54] Esta codificación es actualmente recomendada por ISO / IEC 2022 / ECMA-35 para aplicaciones que requieren representaciones de un solo byte de 7 bits de SS2 y SS3, [55] y también puede usarse solo para SS2, [56] aunque el código más antiguo también existen conjuntos con SS2 en 0x1C, [57] [58] [59] y se mencionaron como tales en una edición anterior del estándar. [60] La codificación 0x8E y 0x8F de los turnos individuales, como se muestra a continuación, es obligatoria para los niveles 2 y 3 de ISO / IEC 4873. [61]
Código | Maleficio | Abbr. | Nombre | Efecto |
---|---|---|---|---|
SI | 0F | SI LS0 | Cambio hacia adentro Bloqueando el cambio cero | GL codifica G0 a partir de ahora [62] [63] |
SO | 0E | SO LS1 | Shift Out Bloqueo del turno uno | GL codifica G1 a partir de ahora [62] [63] |
ESC n | 1B 6E | LS2 | Bloquear el turno dos | GL codifica G2 a partir de ahora [62] [63] |
ESC o | 1B 6F | LS3 | Bloqueo del turno tres | GL codifica G3 a partir de ahora [62] [63] |
Área CR: SS2 Código de escape: ESC N | Área CR: 8E Código de escape: 1B 4E | SS2 | Solo turno dos | GL o GR (ver más abajo) codifica G2 solo para el carácter inmediatamente siguiente [64] |
Área CR: SS3 Código de escape: ESC O | Área CR: 8F Código de escape: 1B 4F | SS3 | Solo turno tres | GL o GR (ver más abajo) codifica G3 solo para el carácter inmediatamente siguiente [64] |
ESC ~ | 1B 7E | LS1R | Bloquear el cambio uno a la derecha | GR codifica G1 a partir de ahora [65] |
ESC } | 1B 7D | LS2R | Bloqueo del cambio dos a la derecha | GR codifica G2 a partir de ahora [65] |
ESC | | 1B 7C | LS3R | Bloqueando el turno tres a la derecha | GR codifica G3 a partir de ahora [65] |
En entornos de 8 bits, se puede utilizar GL o GR, pero no ambos, como área de turno único. Esto debe especificarse en la definición de la versión del código. [64] Por ejemplo, ISO / IEC 4873 especifica GL, mientras que EUC empaquetado especifica GR. En entornos de 7 bits, solo se utiliza GL como área de turno único. [66] [67] Si es necesario, se puede comunicar qué área de turno único se usa mediante secuencias de locutores .
Los nombres "bloqueo de cambio cero" (LS0) y "bloqueo de cambio uno" (LS1) se refieren al mismo par de caracteres de control C0 (0x0F y 0x0E) que los nombres "cambio de entrada" (SI) y "cambio de salida" (SO ). Sin embargo, el estándar se refiere a ellos como LS0 y LS1 cuando se utilizan en entornos de 8 bits y como SI y SO cuando se utilizan en entornos de 7 bits. [51]
El estándar ISO / IEC 2022 / ECMA-35 permite, pero desaconseja, invocar G1, G2 o G3 tanto en GL como en GR simultáneamente. [68]
Registro de conjuntos de códigos gráficos y de control
El registro internacional ISO de conjuntos de caracteres codificados que se utilizarán con secuencias de escape (ISO-IR) enumera conjuntos de caracteres gráficos, conjuntos de códigos de control, códigos de control únicos, etc., que se han registrado para su uso con ISO / IEC 2022. El procedimiento de registro Los códigos y conjuntos con el registro ISO-IR están especificados por ISO / IEC 2375 . Cada registro recibe una secuencia de escape única y un número de entrada de registro exclusivo para identificarlo. [69] [70] Por ejemplo, el juego de caracteres CCITT para chino simplificado se conoce como ISO-IR-165 .
El registro de juegos de caracteres codificados con el registro ISO-IR identifica los documentos que especifican el juego de caracteres o la función de control asociada con una secuencia de escape de uso no privado ISO / IEC 2022. Este puede ser un documento estándar; sin embargo, el registro no crea un nuevo estándar ISO, no compromete a ISO o IEC a adoptarlo como estándar internacional, y no compromete a ISO o IEC a agregar ninguno de sus caracteres al Juego de Caracteres Codificados Universal . [71]
Designaciones de juegos de caracteres
Las secuencias de escape para designar conjuntos de caracteres toman la forma . Como se mencionó anteriormente, los bytes intermedios ( I ) son del rango 0x20–0x2F, y el byte final ( F ) es del rango 0x30–0x7E. El primer byte I (o, para un conjunto de varios bytes, los dos primeros) identifica el tipo de conjunto de caracteres y el conjunto de trabajo al que se designará, mientras que el byte F (y cualquier byte I adicional ) identifica el conjunto de caracteres sí mismo, según lo asignado en el registro ISO-IR (o, para las secuencias de escape de uso privado, por acuerdo previo).ESC I [I...] F
Se pueden agregar bytes I adicionales antes del byte F para extender el rango de bytes F. Actualmente, solo se usa con conjuntos de 94 caracteres, donde se han asignado los códigos del formulario . [72] En el otro extremo, no se han registrado conjuntos de 96 multibyte, por lo que las secuencias siguientes son estrictamente teóricas.ESC ( ! F
Al igual que con otros tipos de secuencia de escape, el rango 0x30–0x3F está reservado para bytes F de uso privado , [26] en este caso para definiciones de juegos de caracteres de uso privado (que pueden incluir conjuntos no registrados definidos por protocolos como ARIB STD-B24 [ 73] o MARC-8 , [3] o conjuntos específicos de proveedores como DEC Special Graphics ). [74] Sin embargo, en una secuencia de designación de conjunto gráfico, si el segundo byte I (para un conjunto de un solo byte) o el tercer byte I (para un conjunto de doble byte) es 0x20 (espacio), el conjunto denotado es un " juego de caracteres dinámicamente redefinible "(DRCS) definido por acuerdo previo, [75] que también se considera uso privado. [26] Un conjunto gráfico que se considera un DRCS implica que representa una fuente de glifos exactos, en lugar de un conjunto de caracteres abstractos. [76] La manera en que los conjuntos DRCS y las fuentes asociadas se transmiten, asignan y administran no está estipulada por la propia ISO / IEC 2022 / ECMA-35, aunque recomienda asignarlos secuencialmente comenzando con el byte F 0x40 ( @
); [77] sin embargo, una manera de transmitir fuentes DRCS se define dentro de algunos protocolos de telecomunicaciones como el Teletexto del Sistema Mundial . [78]
También hay tres casos especiales para códigos multibyte. Las secuencias de código ESC $ @
, ESC $ A
y ESC $ B
todos fueron registrados cuando la versión actual de la norma permitió conjuntos de múltiples bytes sólo en G0, por lo que debe ser aceptada en lugar de las secuencias ESC $ ( @
a través ESC $ ( B
de designar al conjunto de caracteres G0. [79]
Hay características adicionales (raras veces utilizadas) para cambiar los conjuntos de caracteres de control, pero esta es una búsqueda de un solo nivel, ya que (como se indicó anteriormente) el conjunto C0 siempre se invoca sobre CL, y el conjunto C1 siempre se invoca sobre CR o por utilizando códigos de escape. Como se indicó anteriormente, se requiere que cualquier juego de caracteres C0 incluya el carácter ESC en la posición 0x1B, para que sean posibles más cambios. Las secuencias de designación del conjunto de control (a diferencia de las del conjunto gráfico) también se pueden utilizar desde ISO / IEC 10646 (UCS / Unicode), en contextos donde el procesamiento de códigos de escape ANSI es apropiado, siempre que cada byte de la secuencia se rellene para el tamaño de la unidad de código de la codificación. [80]
A continuación se muestra una tabla de bytes de la secuencia de escape I y la designación u otra función que realizan. [81]
Código | Maleficio | Abbr. | Nombre | Efecto | Ejemplo |
---|---|---|---|---|---|
ESC SP F | 1B 20 F | ACS | Anunciar la estructura del código | Especifica las características de código utilizadas, por ejemplo, conjuntos de trabajo (ver más abajo ). [82] | ESC SP L ( ISO 4873 nivel 1) |
ESC ! F | 1B 21 F | CZD | C0-designado | F selecciona un juego de caracteres de control C0 que se utilizará. [83] | ESC ! @ ( Códigos ASCII C0 ) |
ESC " F | 1B 22 F | C1D | C1-designado | F selecciona un juego de caracteres de control C1 que se utilizará. [84] | ESC " C ( Códigos ISO 6429 C1 ) |
ESC # F | 1B 23 F | - | (Función de control único) | (Reservado para secuencias para funciones de control, ver arriba ). | ESC # 6 (uso privado: línea de ancho doble DEC ) [85] |
|
| GZDM4 | Conjunto 94 multibyte designado G0 | F selecciona un conjunto de 94 n caracteres que se utilizará para G0. [79] | ESC $ ( C ( KS X 1001 en G0) |
ESC $ ) F | 1B 24 29 F | G1DM4 | Conjunto 94 multibyte designado G1 | F selecciona un conjunto de 94 n caracteres que se utilizará para G1. [79] | ESC $ ) A ( GB 2312 en G1) |
ESC $ * F | 1B 24 2A F | G2DM4 | Conjunto 94 multibyte designado G2 | F selecciona un conjunto de 94 n caracteres que se utilizará para G2. [79] | ESC $ * B ( JIS X 0208 en G2) |
ESC $ + F | 1B 24 2B F | G3DM4 | Conjunto 94 multibyte designado G3 | F selecciona un conjunto de 94 n caracteres que se utilizará para G3. [79] | ESC $ + D ( JIS X 0212 en G3) |
ESC $ , F | 1B 24 2C F | - | (no utilizado) | (no utilizado) [b] | - |
ESC $ - F | 1B 24 2D F | G1DM6 | Conjunto de 96 multibyte designado por G1 | F selecciona un conjunto de 96 n caracteres que se utilizará para G1. [79] | ESC $ - 1 (uso privado) |
ESC $ . F | 1B 24 2E F | G2DM6 | Conjunto de 96 multibyte designado por G2 | F selecciona un conjunto de 96 n caracteres que se utilizará para G2. [79] | ESC $ . 2 (uso privado) |
ESC $ / F | 1B 24 2F F | G3DM6 | Conjunto de 96 multibyte designado por G3 | F selecciona un conjunto de 96 n caracteres que se utilizará para G3. [79] | ESC $ + 3 (uso privado) |
ESC % F | 1B 25 F | DOCS | Designar otro sistema de codificación | Sistema de codificación de interruptores, ver más abajo . | ESC % G ( UTF-8 ) |
ESC & F | 1B 26 F | TIR | Identificar el registro revisado | Prefijos de designación de escape para denotar revisión. [C] | ESC & @ ESC $ B ( JIS X 0208: 1990 en G0) |
ESC ' F | 1B 27 F | - | (no utilizado) | (no utilizado) | - |
ESC ( F | 1B 28 F | GZD4 | G0 designado 94-set | F selecciona un conjunto de 94 caracteres que se utilizará para G0. [79] | ESC ( B ( ASCII en G0) |
ESC ) F | 1B 29 F | G1D4 | G1-designado 94-set | F selecciona un juego de 94 caracteres que se utilizará para G1. [79] | ESC ) I ( JIS X 0201 Kana en G1) |
ESC * F | 1B 2A F | G2D4 | G2-designado 94-set | F selecciona un conjunto de 94 caracteres que se utilizará para G2. [79] | ESC * v ( ITU T.61 RHS en G2) |
ESC + F | 1B 2B F | G3D4 | G3-designado 94-set | F selecciona un conjunto de 94 caracteres que se utilizará para G3. [79] | ESC + D ( NATS-SEFI-ADD en G3) |
ESC , F | 1B 2C F | - | (no utilizado) | (no usado) [d] | - |
ESC - F | 1B 2D F | G1D6 | G1-designado 96-set | F selecciona un conjunto de 96 caracteres que se utilizará para G1. [79] | ESC - A ( ISO 8859-1 RHS en G1) |
ESC . F | 1B 2E F | G2D6 | G2-designado 96-set | F selecciona un conjunto de 96 caracteres que se utilizará para G2. [79] | ESC . B ( ISO 8859-2 RHS en G2) |
ESC / F | 1B 2F F | G3D6 | G3-designado 96-set | F selecciona un conjunto de 96 caracteres que se utilizará para G3. [79] | ESC / b ( ISO 8859-15 RHS en G3) |
Tenga en cuenta que el registro de bytes F es independiente para los diferentes tipos. El conjunto de gráficos de 94 caracteres designado por ESC ( A
mediante ESC + A
no está relacionado de ninguna manera con el conjunto de 96 caracteres designado por ESC - A
mediante ESC / A
. Y ninguno de los que se relaciona con el 94 n -character conjunto designado por el ESC $ ( A
medio ESC $ + A
, y así sucesivamente; los bytes finales deben interpretarse en contexto. (De hecho, sin bytes intermedios, ESC A
es una forma de especificar el código de control C1 0x81).
También tenga en cuenta que los juegos de caracteres de control C0 y C1 son independientes; el juego de caracteres de control C0 designado por ESC ! A
(que resulta ser el juego de control NATS para la transmisión de texto de periódicos) no es el mismo que el juego de caracteres de control C1 designado por ESC " A
(el juego de control de atributo CCITT para Videotex ).
Interacción con otros sistemas de codificación
El estándar también define una forma de especificar sistemas de codificación que no siguen su propia estructura.
También se define una secuencia para volver a ISO / IEC 2022; Los registros que admiten esta secuencia codificada en ISO / IEC 2022 comprenden (a partir de 2019) varios formatos de videotex , UTF-8 y UTF-1 . [89] Un segundo byte I de 0x2F ( /
) se incluye en las secuencias de designación de códigos que no utilizan esa secuencia de bytes para volver a ISO 2022; pueden tener sus propios medios para volver a ISO 2022 (como una secuencia diferente o rellena) o ninguno en absoluto. [90] Todos los registros existentes del último tipo (a partir de 2019) son datos sin procesar transparentes, formatos Unicode / UCS o subconjuntos de los mismos. [91]
Código | Maleficio | Abbr. | Nombre | Efecto |
---|---|---|---|---|
ESC % @ | 1B 25 40 | DOCS | Designar otro sistema de codificación ("devolución estándar") | Regrese a ISO / IEC 2022 desde otra codificación. [90] |
ESC % F | 1B 25 F | Designar otro sistema de codificación ("con retorno estándar") [89] | F selecciona un código de 8 bits; utilizar ESC % @ para volver. [90] | |
ESC % / F | 1B 25 2F F | Designar otro sistema de codificación ("sin declaración estándar") [91] | F selecciona un código de 8 bits; no hay una forma estándar de regresar. [90] | |
ESC d | 1B 64 | CMD | Delimitador del método de codificación | Denota el final de una secuencia codificada ISO / IEC 2022. [92] |
De particular interés son las secuencias que cambian a formatos ISO / IEC 10646 ( Unicode ) que no siguen la estructura ISO / IEC 2022. Estos incluyen UTF-8 (que no reserva el rango 0x80–0x9F para caracteres de control), su predecesor UTF-1 (que mezcla bytes GR y GL en códigos multibyte) y UTF-16 y UTF-32 (que usan unidades de codificación más amplias). [89] [91]
También se registraron varios códigos para subconjuntos (niveles 1 y 2) de UTF-8, UTF-16 y UTF-32, así como para tres niveles de UCS-2 . [91] Sin embargo, los únicos códigos especificados actualmente por ISO / IEC 10646 son los códigos de nivel 3 para UTF-8, UTF-16 y UTF-32 y el código de nivel no especificado para UTF-8, y el resto figura como obsoleto. [93] ISO / IEC 10646 estipula que los formatos big-endian de UTF-16 y UTF-32 se designan por sus secuencias de escape. [94]
Formato Unicode | Código (s) | Hexágono [93] | Códigos obsoletos | Hexadecimal obsoleto [89] [91] [93] |
---|---|---|---|---|
UTF-1 | (UTF-1 no está en la norma ISO / IEC 10646 actual). | ESC % B | 1B 25 42 | |
UTF-8 | ESC % G , ESC % / I | 1B 25 47 , [95] 1B 25 2F 49 [96] | ESC % / G , ESC % / H | 1B 25 2F 47 , 1B 25 2F 48 |
UTF-16 | ESC % / L | 1B 25 2F 4C [97] | ESC % / @ , ESC % / C , ESC % / E , ESC % / J ,ESC % / K | 1B 25 2F 40 , 1B 25 2F 43 , 1B 25 2F 45 , 1B 25 2F 4A ,1B 25 2F 4B |
UTF-32 | ESC % / F | 1B 25 2F 46 | ESC % / A , ESC % / D | 1B 25 2F 41 , 1B 25 2F 44 |
De las secuencias que cambian a UTF-8, ESC % G
es la que admite, por ejemplo, xterm . [50]
Aunque se permite el uso de una variante de la secuencia de retorno estándar de UTF-16 y UTF-32, los bytes de la secuencia de escape deben rellenarse con el tamaño de la unidad de código de la codificación (es decir, 001B 0025 0040
para UTF-16), es decir, el La codificación de la secuencia de retorno estándar no se ajusta exactamente a ISO / IEC 2022. Por esta razón, las designaciones para UTF-16 y UTF-32 utilizan una sintaxis sin retorno estándar. [98]
Anuncios de estructura de código
La secuencia "anunciar estructura de código" ( ) se utiliza para anunciar una estructura de código específica, o un grupo específico de instalaciones ISO 2022 que se utilizan en una versión de código particular. Aunque los anuncios se pueden combinar, ciertas combinaciones contradictorias (específicamente, el uso de anuncios de cambio de bloqueo 16-23 con anuncios 1, 3 y 4) están prohibidas por la norma, al igual que el uso de anuncios adicionales además de los anuncios de nivel 12-14 de ISO / IEC 4873 [82] (que especifica completamente las características estructurales permisibles). Las secuencias de anuncios son las siguientes:ESC SP (0x20) F
Número | Código | Maleficio | Se anuncia la función de versión de código [82] |
---|---|---|---|
1 | ESC SP A | 1B 20 41 | G0 en GL, GR ausente o sin usar, sin cambios de bloqueo. |
2 | ESC SP B | 1B 20 42 | G0 y G1 invocados a GL mediante el bloqueo de cambios, GR ausente o no utilizado. |
3 | ESC SP C | 1B 20 43 | G0 en GL, G1 en GR, sin cambios de bloqueo, requiere un entorno de 8 bits. |
4 | ESC SP D | 1B 20 44 | G0 en GL, G1 en GR si es de 8 bits, sin cambios de bloqueo a menos que esté en un entorno de 7 bits. |
5 | ESC SP E | 1B 20 45 | Funciones de cambio conservadas durante la conversión de 7 bits / 8 bits. |
6 | ESC SP F | 1B 20 46 | Controles C1 usando secuencias de escape. |
7 | ESC SP G | 1B 20 47 | C1 controla en la región CR en entornos de 8 bits, como secuencias de escape en caso contrario. |
8 | ESC SP H | 1B 20 48 | Solo conjuntos gráficos de 94 caracteres. |
9 | ESC SP I | 1B 20 49 | Conjuntos gráficos de 94 caracteres y / o 96 caracteres. |
10 | ESC SP J | 1B 20 4A | Utiliza un código de 7 bits, incluso si hay un octavo bit disponible para su uso. |
11 | ESC SP K | 1B 20 4B | Requiere un código de 8 bits. |
12 | ESC SP L | 1B 20 4C | Cumple con ISO / IEC 4873 (ECMA-43) nivel 1. |
13 | ESC SP M | 1B 20 4D | Cumple con ISO / IEC 4873 (ECMA-43) nivel 2. |
14 | ESC SP N | 1B 20 4E | Cumple con ISO / IEC 4873 (ECMA-43) nivel 3. |
dieciséis | ESC SP P | 1B 20 50 | SI / LS0 utilizado. |
18 | ESC SP R | 1B 20 52 | Se utiliza SO / LS1. |
19 | ESC SP S | 1B 20 53 | LS1R utilizado en entornos de 8 bits, SO utilizado en entornos de 7 bits. |
20 | ESC SP T | 1B 20 54 | LS2 utilizado. |
21 | ESC SP U | 1B 20 55 | LS2R utilizado en entornos de 8 bits, LS2 utilizado en entornos de 7 bits. |
22 | ESC SP V | 1B 20 56 | LS3 utilizado. |
23 | ESC SP W | 1B 20 57 | LS3R utilizado en entornos de 8 bits, LS3 utilizado en entornos de 7 bits. |
26 | ESC SP Z | 1B 20 5A | SS2 utilizado. |
27 | ESC SP [ | 1B 20 5B | SS3 utilizado. |
28 | ESC SP \ | 1B 20 5C | Los turnos individuales invocan sobre GR. |
Versiones del código ISO / IEC 2022
Versiones de correo electrónico en japonés
ISO-2022-JP es una codificación ampliamente utilizada para japonés, en particular en elcorreo electrónico. Se introdujo para su uso en la red JUNET y luego se codificó enIETF RFC1468, con fecha de 1993. [99] Tiene una ventaja sobre otrascodificaciones para japonésen que no requiereunatransmisiónlimpia de 8 bits. Microsoft lo llamapágina de código 50220. [100] Comienza en ASCII e incluye las siguientes secuencias de escape:
ESC ( B
para cambiar a ASCII (1 byte por carácter)ESC ( J
para cambiar a JIS X 0201-1976 (ISO / IEC 646: JP) Conjunto romano (1 byte por carácter)ESC $ @
para cambiar a JIS X 0208-1978 (2 bytes por carácter)ESC $ B
para cambiar a JIS X 0208-1983 (2 bytes por carácter)
Se permite el uso de los dos caracteres añadidos en JIS X 0208-1990, pero sin incluir la secuencia IRR, es decir, utilizando la misma secuencia de escape que JIS X 0208-1983. [99] Además, debido a que se registró antes de designar conjuntos de múltiples bytes excepto para G0, los escapes para JIS X 0208 no incluyen el segundo I -byte (
. [79]
Las notas RFC que algunos sistemas existentes no distinguen a ESC ( B
partir de ESC ( J
, o no se distinguen a ESC $ @
partir ESC $ B
, pero estipula que las secuencias de escape no deben ser cambiados por los sistemas de transmisión de los mensajes simplemente como e-mails. [99] El WHATWG Encoding norma referenciada por HTML5 asas ESC ( B
y ESC ( J
distintamente, pero trata ESC $ @
el mismo que ESC $ B
cuando se decodifica, y utiliza sólo ESC $ B
para JIS X 0208 cuando se codifica. [101] La RFC también señala que algunos sistemas anteriores habían hecho un uso erróneo de la secuencia ESC ( H
para cambiar de JIS X 0208, que en realidad está registrado para ISO-IR-11 (una variante sueca de ISO 646 y World System Teletext ). [99] [e]
El uso de ESC ( I
para cambiar al conjunto Kana JIS X 0201-1976 (1 byte por carácter) no forma parte del perfil ISO-2022-JP, [99] pero también se utiliza a veces. Python lo permite en una variante que etiqueta ISO-2022-JP-EXT (que también incorpora JIS X 0212 como se describe a continuación, completando la cobertura de EUC-JP ); [102] [103] esto se acerca tanto en nombre como en estructura a una codificación denominada ISO-2022-JPext por DEC , que además agrega una región definida por el usuario de dos bytes a la que se accede ESC $ ( 0
para completar la cobertura de Super DEC Kanji . [104] La variante WHATWG / HTML5 permite decodificar katakana JIS X 0201 en la entrada ISO-2022-JP, pero convierte los caracteres a sus equivalentes JIS X 0208 al codificarlos. [101] La página de códigos de Microsoft para ISO-2022-JP con JIS X 0201 kana adicionalmente permitida es la página de códigos 50221 . [100]
Otras variantes más antiguas conocidas como JIS7 y JIS8 se basan directamente en las codificaciones de 7 y 8 bits definidas por JIS X 0201 y permiten el uso de JIS X 0201 kana de G1 sin secuencias de escape, usando Shift Out y Shift In o configurando el octavo bit (GR-invocado), respectivamente. [105] No se utilizan mucho; [105] La compatibilidad con JIS X 0208 en JIS X 0201 de 8 bits extendido se logra más comúnmente a través de Shift JIS . La página de códigos de Microsoft para ISO 2022 basada en JIS X 0201 con katakana de un solo byte a través de Shift Out y Shift In es la página de códigos 50222 . [100]
ISO-2022-JP-2 es una extensión multilingüe de ISO-2022-JP, definida en RFC 1554 (con fecha de 1993), que permite las siguientes secuencias de escape además de las de ISO-2022-JP. Laspartes deISO / IEC 8859son conjuntos de 96 caracteres que no se pueden designar a G0, y se accede desde G2 utilizando la forma de secuencia de escape de 7 bits del código de turno único SS2: [106]
ESC $ A
para cambiar a GB 2312-1980 (2 bytes por carácter)ESC $ ( C
para cambiar a KS X 1001-1992 (2 bytes por carácter)ESC $ ( D
para cambiar a JIS X 0212-1990 (2 bytes por carácter)ESC . A
para cambiar a ISO / IEC 8859-1 parte alta, conjunto de latín extendido 1 (1 byte por carácter) [designado a G2]ESC . F
para cambiar a ISO / IEC 8859-7 parte alta, conjunto griego básico (1 byte por carácter) [designado a G2]
ISO-2022-JP con la representación ISO-2022-JP-2 de JIS X 0212, pero no las otras extensiones, fue posteriormente denominada ISO-2022-JP-1 por RFC 2237, con fecha de 1997. [107]
El estándar JIS X 0213 , publicado por primera vez en 2000, define una versión actualizada de ISO-2022-JP, sin las extensiones ISO-2022-JP-2, denominada ISO-2022-JP-3 . Las adiciones realizadas por JIS X 0213 en comparación con el estándar base JIS X 0208 dieron como resultado un nuevo registro para el plano 1 de JIS ampliado, mientras que el nuevo plano 2 recibió su propio registro. Las adiciones adicionales al plano 1 en la edición de 2004 de la norma dieron como resultado un registro adicional que se agregó a una revisión adicional del perfil, denominada ISO-2022-JP-2004 . Además de los códigos de designación básicos ISO-2022-JP, se reconocen las siguientes designaciones:
ESC ( I
para cambiar a JIS X 0201-1976 Kana set (1 byte por carácter)ESC $ ( O
para cambiar a JIS X 0213-2000 Plano 1 (2 bytes por carácter)ESC $ ( P
para cambiar a JIS X 0213-2000 Plano 2 (2 bytes por carácter)ESC $ ( Q
para cambiar a JIS X 0213-2004 Plano 1 (2 bytes por carácter, solo ISO-2022-JP-2004)
Otras versiones de 7 bits
ISO-2022-KR se define en RFC 1557, con fecha de 1993. [108] CodificaASCIIy el coreano de doble byteKS X 1001-1992, [109] [110] anteriormente denominado KS C 5601-1987. A diferencia de ISO-2022-JP-2, utiliza los caracteresShift Out y Shift Inpara cambiar entre ellos, después de incluirESC $ ) C
una vez al comienzo de una línea para designar KS X 1001 a G1. [108]
ISO-2022-CN eISO-2022-CN-EXTse definen en RFC 1922, con fecha de 1996. Son codificaciones de 7 bits que utilizan las funciones Shift Out y Shift In (para cambiar entre G0 y G1), y de las formas de código de escape de 7 bits de las funciones de turno único SS2 y SS3 (para acceder a G2 y G3). [111] Admitenlos juegos de caracteresGB 2312(parachino simplificado) yCNS 11643(parachino tradicional).
El perfil básico ISO-2022-CN usa ASCII como su conjunto G0 (cambio de entrada), y también incluye GB 2312 y los dos primeros planos de CNS 11643 (debido a que estos dos planos son suficientes para representar todos los caracteres chinos tradicionales de Big5 común , al que la RFC proporciona correspondencia en un apéndice): [111]
ESC $ ) A
para cambiar a GB 2312-1980 (2 bytes por carácter) [designado a G1]ESC $ ) G
para cambiar a CNS 11643-1992 Plano 1 (2 bytes por carácter) [designado a G1]ESC $ * H
para cambiar a CNS 11643-1992 Plano 2 (2 bytes por carácter) [designado a G2]
El perfil ISO-2022-CN-EXT permite los siguientes conjuntos y planos adicionales. [111]
ESC $ ) E
para cambiar a ISO-IR-165 (2 bytes por carácter) [designado a G1]ESC $ + I
para cambiar a CNS 11643-1992 Plano 3 (2 bytes por carácter) [designado a G3]ESC $ + J
para cambiar a CNS 11643-1992 Plano 4 (2 bytes por carácter) [designado a G3]ESC $ + K
para cambiar al plano 5 de CNS 11643-1992 (2 bytes por carácter) [designado a G3]ESC $ + L
para cambiar a CNS 11643-1992 Plano 6 (2 bytes por carácter) [designado a G3]ESC $ + M
para cambiar a CNS 11643-1992 Plano 7 (2 bytes por carácter) [designado a G3]
El perfil ISO-2022-CN-EXT enumera además conjuntos gráficos estándar de Guobiao adicionales como permitidos, pero con la condición de que se les asignen secuencias de escape ISO 2022 registradas: [111]
- GB 12345 en G1
- GB 7589 o GB 13131 en G2
- GB 7590 o GB 13132 en G3
El carácter después de ESC
(para juegos de caracteres de un solo byte) o ESC $
(para juegos de caracteres de varios bytes) especifica el tipo de juego de caracteres y juego de trabajo designado. En los ejemplos anteriores, el carácter (
(0x28) designa un juego de 94 caracteres al juego de caracteres G0, mientras que )
, *
o +
(0x29–0x2B) designa a los juegos de caracteres G1 – G3.
ISO-2022-KR e ISO-2022-CN se utilizan con menos frecuencia que ISO-2022-JP y, a veces, deliberadamente no se admiten debido a problemas de seguridad. En particular, el estándar de codificación WHATWG utilizado por HTML5 asigna ISO-2022-KR, ISO-2022-CN e ISO-2022-CN-EXT (así como HZ-GB-2312 ) al decodificador de "reemplazo", [112] que asigna toda la entrada al carácter de reemplazo ( ), con el fin de evitar ciertas secuencias de comandos entre sitios y ataques relacionados, que utilizan una diferencia en el soporte de codificación entre el cliente y el servidor. [113] Aunque el mismo problema de seguridad (permitir que las secuencias de bytes ASCII se interpreten de manera diferente) también se aplica a ISO-2022-JP y UTF-16 , no se les pudo dar este tratamiento debido a que se usan con mucha más frecuencia en el contenido implementado. [114]
ISO / IEC 4873
Un subconjunto de ISO 2022 aplicado a codificaciones de un solo byte de 8 bits está definido por ISO / IEC 4873 , también publicado por Ecma International como ECMA-43. ISO / IEC 8859 define códigos de 8 bits para ISO / IEC 4873 (o ECMA-43) nivel 1. [12] [13]
ISO / IEC 4873 / ECMA-43 define tres niveles de codificación: [115]
- Nivel 1, que incluye un conjunto C0, el conjunto ASCII G0, un conjunto C1 opcional y un conjunto G1 opcional de un solo byte (94 caracteres o 96 caracteres). G0 se invoca a través de GL y G1 se invoca a través de GR. No se permite el uso de funciones de turno.
- Nivel 2, que incluye un conjunto G2 y / o G3 de un solo byte (94 o 96 caracteres) además de un conjunto G1 obligatorio. Solo se permiten las funciones de turno único SS2 y SS3 (es decir, se prohíben los cambios de bloqueo), y se invocan a través de la región GL (incluidos 0x 20 y 0x7F en el caso de un conjunto de 96). SS2 y SS3 deben estar disponibles en C1 en 0x8E y 0x8F respectivamente. Este conjunto mínimo de C1 requerido para ISO 4873 está registrado como ISO-IR-105. [116]
- Nivel 3, que permite las funciones de cambio de bloqueo GR LS1R, LS2R y LS3R además de los cambios individuales, pero por lo demás tiene las mismas restricciones que el nivel 2.
Las ediciones anteriores del estándar permitían asignaciones no ASCII en el conjunto G0, siempre que se mantuvieran las posiciones invariantes de ISO 646 , que las otras posiciones se asignaran a caracteres de espaciado (no de combinación), que 0x23 se asignara a £ o # , y que 0x24 se asignó a $ o ¤ . [117] Por ejemplo, la codificación de 8 bits de JIS X 0201 es compatible con ediciones anteriores. Esto se cambió posteriormente para especificar completamente el conjunto ISO 646: 1991 IRV / ISO-IR No. 6 ( ASCII ). [118] [119] [120]
El uso de ISO 646 IRV (sincronizado con ASCII desde 1991) en ISO / IEC 4873 Nivel 1 sin conjunto C1 o G1, es decir, usar el IRV en un entorno de 8 bits en el que no se utilizan códigos de desplazamiento y el bit alto es siempre cero, se conoce como ISO 4873 DV , en el que DV significa "Versión predeterminada". [121]
En los casos en que los caracteres duplicados estén disponibles en diferentes conjuntos, la edición actual de ISO / IEC 4873 / ECMA-43 solo permite el uso de estos caracteres en el conjunto de trabajo con el número más bajo en el que aparecen. [122] Por ejemplo, si un carácter aparece en Tanto el conjunto G1 como el conjunto G3, debe utilizarse desde el conjunto G1. Sin embargo, se indica que el uso de otros conjuntos se ha permitido en ediciones anteriores. [120]
ISO / IEC 8859 define codificaciones completas en el nivel 1 de ISO / IEC 4873 y no permite el uso de varias partes de ISO / IEC 8859 juntas. Estipula que ISO / IEC 10367 debe usarse en su lugar para los niveles 2 y 3 de ISO / IEC 4873. [12] [13] ISO / IEC 10367: 1991 incluye conjuntos G0 y G1 que coinciden con los usados por las primeras 9 partes de ISO / IEC 8859 (es decir, las que existían en 1991, cuando se publicó) y algunos conjuntos complementarios. [123]
Las secuencias de escape de designación de juegos de caracteres se utilizan para identificar o cambiar entre versiones durante el intercambio de información solo si lo requiere un protocolo adicional, en cuyo caso la norma requiere una secuencia de anunciador ISO / IEC 2022 que especifique el nivel ISO / IEC 4873, seguida de un conjunto completo de escapes especificando las designaciones del juego de caracteres para C0, C1, G0, G1, G2 y G3 respectivamente (pero omitiendo las designaciones G2 y G3 para el nivel 1), con un byte F de 0x7E que denota un juego vacío. Cada nivel ISO / IEC 4873 tiene su propia secuencia de anunciador ISO / IEC 2022, que es la siguiente: [124]
Código | Maleficio | Anuncio |
---|---|---|
ESC SP L | 1B 20 4C | ISO 4873 Nivel 1 |
ESC SP M | 1B 20 4D | ISO 4873 Nivel 2 |
ESC SP N | 1B 20 4E | ISO 4873 Nivel 3 |
Código Unix extendido
El código Unix extendido (EUC) es un sistema de codificación de caracteres de ancho variable de 8 bits que se utiliza principalmente para japonés , coreano y chino simplificado . Se basa en ISO 2022, y solo los conjuntos de caracteres que se ajustan a la estructura de ISO 2022 pueden tener formularios EUC. Se pueden representar hasta cuatro juegos de caracteres codificados (en G0, G1, G2 y G3). El conjunto G0 se invoca sobre GL, el conjunto G1 se invoca sobre GR, y los conjuntos G2 y G3 se invocan (si están presentes) utilizando los turnos únicos SS2 y SS3, que se utilizan sobre GR (no GL), es decir, en 0x8E y 0x8F respectivamente. [14] No se utilizan códigos de cambio de bloqueo. [125]
El código asignado al conjunto G0 es ASCII , o el conjunto de caracteres ISO 646 nacional del país , como KS-Roman (KS X 1003) o JIS-Roman (la mitad inferior de JIS X 0201 ). [14] Por lo tanto, 0x5C ( barra invertida en US-ASCII) se usa para representar un signo de Yen en algunas versiones de EUC-JP y un signo de Won en algunas versiones de EUC-KR.
G1 se utiliza para un juego de caracteres codificados 94x94 representado en dos bytes. La forma EUC-CN de GB2312 y EUC-KR son ejemplos de dichos códigos EUC de dos bytes. EUC-JP incluye caracteres representados por hasta tres bytes (es decir, SS3 más dos bytes) mientras que un solo carácter en EUC-TW puede ocupar hasta cuatro bytes (es decir, SS2 más tres bytes).
El código EUC en sí mismo no hace uso del anunciador o secuencias de designación de ISO 2022; sin embargo, corresponde a la siguiente secuencia de cuatro secuencias de locutores, con los significados desglosados de la siguiente manera. [126]
Secuencia individual | Hexadecimal | Característica de EUC denotada |
---|---|---|
ESC SP C | 1B 20 43 | ISO-8 (8 bits, G0 en GL, G1 en GR) |
ESC SP Z | 1B 20 5A | G2 accedido usando SS2 |
ESC SP [ | 1B 20 5B | G3 accedido usando SS3 |
ESC SP \ | 1B 20 5C | Invocación de turnos individuales sobre GR |
Comparación con otras codificaciones
Ventajas
- Como toda la gama de codificaciones de caracteres gráficos de ISO / IEC 2022 se puede invocar sobre GL, los glifos disponibles no están significativamente limitados por la incapacidad de representar GR y C1, como en un sistema limitado a codificaciones de 7 bits. En consecuencia, permite la representación de un gran conjunto de caracteres en dicho sistema. Generalmente, esta compatibilidad de 7 bits no es realmente una ventaja, excepto por la compatibilidad con sistemas anteriores. La gran mayoría de las computadoras modernas usan 8 bits para cada byte.
- En comparación con Unicode, ISO / IEC 2022 elude la unificación de Han mediante el uso de códigos de secuencia para cambiar entre codificaciones discretas para diferentes idiomas de Asia oriental. Esto evita los problemas [ cita requerida ] asociados con la unificación, como la dificultad para admitir varios idiomas CJK con sus variantes de caracteres asociadas en un solo documento y fuente.
Desventajas
- Dado que ISO / IEC 2022 es una codificación con estado, un programa no puede saltar en medio de un bloque de texto para buscar, insertar o eliminar caracteres. Esto hace que la manipulación del texto sea muy engorrosa y lenta en comparación con las codificaciones sin estado. Cualquier salto en el medio del texto puede requerir una copia de seguridad de la secuencia de escape anterior antes de que se puedan interpretar los bytes que siguen a la secuencia de escape.
- Debido a la naturaleza con estado de ISO / IEC 2022, un carácter idéntico y equivalente se puede codificar en diferentes conjuntos de caracteres, que se pueden designar a cualquiera de G0 a G3, que se pueden invocar utilizando turnos únicos o mediante el uso de cambios de bloqueo a GL o GRAMO. En consecuencia, los caracteres se pueden representar de múltiples maneras, lo que significa que dos cadenas visualmente idénticas y equivalentes no se pueden comparar de manera confiable para determinar la igualdad.
- Algunos sistemas, como DICOM y varios clientes de correo electrónico, utilizan una variante de ISO-2022 (por ejemplo, "ISO 2022 IR 100" [127] ) además de admitir varias otras codificaciones. [128] Este tipo de variación dificulta la transferencia portátil de texto entre sistemas informáticos.
- UTF-1 , el formato de transformación Unicode multibyte compatible con la representación de caracteres de control de 8 bits de ISO / IEC 2022, tiene varias desventajas en comparación con UTF-8 y la conmutación desde o hacia otros conjuntos de caracteres, según lo admite ISO / IEC 2022 , suele ser innecesario en documentos Unicode.
- Debido a sus secuencias de escape, es posible construir secuencias de bytes de ataque en las que una cadena maliciosa (como la secuencia de comandos entre sitios ) se enmascara hasta que se decodifica en Unicode, lo que puede permitirle eludir la desinfección. [129] Por lo tanto, el uso de esta codificación es tratado como sospechoso por las suites de protección contra malware, [130] [se necesita una mejor fuente ] y los datos ISO 2022 de 7 bits (excepto ISO-2022-JP) se asignan en su totalidad al carácter de reemplazo en HTML5 para prevenir ataques. [131] [132] Las versiones restringidas del código ISO 2022 de 8 bits que no utilizan escapes de designación o códigos de cambio de bloqueo, como el código Unix extendido , no comparten este problema.
- La concatenación puede plantear problemas. Los perfiles como ISO-2022-JP especifican que la transmisión comienza en el estado ASCII y debe terminar en el estado ASCII. [99] Esto es necesario para garantizar que los caracteres de los flujos ISO-2022-JP y / o ASCII concatenados se interpreten en el conjunto correcto. Esto tiene como consecuencia que si un flujo que termina en un carácter multibyte se concatena con uno que comienza con un carácter multibyte, se generan un par de códigos de escape que cambian a ASCII e inmediatamente se alejan de él. Sin embargo, como se estipula en el Informe técnico de Unicode n. ° 36 ("Consideraciones de seguridad de Unicode"), los pares de secuencias de escape ISO 2022 sin caracteres entre ellos deben generar un carácter de reemplazo (" ") para evitar que se utilicen para enmascarar secuencias maliciosas como como secuencias de comandos entre sitios . [133] La implementación de esta medida, por ejemplo, en Mozilla Thunderbird , ha dado lugar a problemas de interoperabilidad, con la generación de caracteres " " inesperados cuando se han concatenado dos flujos ISO-2022-JP. [129]
Ver también
- ISO 2709
- ISO / IEC 646
- ISO-IR-102
- Códigos de control C0 y C1
- CJK
- Estándares MARC
- Mojibake
- luit
- ISO / IEC JTC 1 / SC 2
Notas al pie
- ^ a b Especificado para bytes F 0x40 (
@
), 0x41 (A
) y 0x42 (B
) únicamente, por razones históricas. [79] Algunas implementaciones, como la codificación de emoji de SoftBank 2G , utilizan escapes adicionales de este formulario para propósitos que no cumplen con ISO-2022. [86] - ^ Listado por MARC-8 . [3] Véase la nota a pie de páginapara conocer los antecedentes.
ESC , F
- ^ F , ajustado al rango 1-63, indica qué revisión (compatible hacia arriba) del registro inmediatamente posterior es necesaria, para que los sistemas antiguos sepan que son antiguos. [87]
- ^ En ediciones anteriores, no existían conjuntos de 96 caracteres y los códigos de escape que ahora se utilizan para conjuntos de 96 caracteres se reservaban como espacio para conjuntos de 94 caracteres adicionales. En consecuencia, la
ESC 0x1B 0x2C
secuencia se definió en las primeras ediciones del estándar como designando más conjuntos de 94 caracteres para G0. [88] Dado que los conjuntos de 96 caracteres no se pueden designar a G0, este primerbyte I no se utiliza en la edición actual de la norma. Sin embargo, todavía está incluido en MARC-8 . [3] - ^ Véase también, por ejemplo, Printronix (2012), OKI® Programmer's Reference Manual (PDF) , p. 26para un sistema más reciente que usa
ESC ( H
para cambiar a ASCII desde un DBCS.
Referencias
- ^ ECMA-35 (1994) , Breve historia
- ^ ECMA-35 (1994) , p. 51, anexo D
- ^ a b c d e "Técnica 2: Uso de juegos de caracteres gráficos alternativos estándar" . Especificaciones MARC 21 para estructura de registros, juegos de caracteres y medios de intercambio . Biblioteca del Congreso . 2007-12-05.
- ^ ECMA-35 (1994) , capítulos 6, 7
- ^ ECMA-35 (1994) , capítulo 8
- ^ ECMA-35 (1994) , capítulo 9
- ^ ECMA-35 (1994) , capítulo 11
- ^ ECMA-35 (1994) , capítulo 13
- ^ ECMA-35 (1994) , capítulos 12, 14
- ↑ a b ECMA-35 (1994) , capítulo 15
- ^ Lunde (2008) , págs. 228-234, Capítulo 4 ("Métodos de codificación"), sección "Codificación ISO-2022"
- ^ a b c ISO / IEC FDIS 8859-10 (1998) , pág. 1, capítulo 1 ("Alcance")
- ↑ a b c ECMA-144 (2000) , pág. 1, capítulo 1 ("Alcance")
- ^ a b c Lunde (2008) , págs. 242-245, Capítulo 4 ("Métodos de codificación"), sección "Codificación EUC"
- ^ ECMA-35 (1994) , p. 4, definición 4.11
- ^ ECMA-35 (1994) , p. 5, definición 4.18
- ^ Ver, por ejemplo, ISO-IR-14 (1975)
ESC 2/8 4/10
. , definiendo la designación G0 del conjunto romano JIS X 0201 como - ^ ECMA-35 (1994) , p. 5, capítulo 5.1
- ^ Véase, por ejemplo, RFC 1468 (1993) , que define la designación G0 del conjunto romano JIS X 0201 como
ESC ( J
. - ^ a b c ECMA-35 (1994) , págs. 15-16, capítulo 8.1
- ^ ECMA-35 (1994) , p. 7, capítulo 6.2
- ^ ECMA-35 (1994) , p. 10, capítulo 6.3.2
- ^ ECMA-35 (1994) , p. 4, definición 4.17
- ^ ECMA-35 (1994) , p. 4, definición 4.14
- ^ ECMA-35 (1994) , p. 28, capítulo 13.1
- ↑ a b c ECMA-35 (1994) , pág. 33, capítulo 13.3.3
- ↑ a b c d ECMA-35 (1994) , pág. 11, capítulo 6.4.3
- ^ ISO-IR-208 (1999)
- ^ ISO-IR-155 (1990)
- ^ ISO-IR-164 (1992)
- ↑ a b ECMA-35 (1994) , p. 10, capítulo 6.3.3
- ^ Google Inc. (2014). "ansi.go, línea 134" . Biblioteca de secuencias de escape ANSI para Go .
- ^ ECMA-43 (1991) , p. 5, capítulo 7 ("Especificación de los caracteres del código de 8 bits")
- ^ ISO / IEC FDIS 8859-10 (1998) , p. 3, capítulo 6 ("Especificación del juego de caracteres codificados")
- ^ ECMA-144 (2000) , pág. 3, capítulo 6 ("Especificación del juego de caracteres codificados")
- ^ ECMA-43 (1991) , p. 19, anexo C ("Caracteres gráficos compuestos")
- ↑ a b ECMA-35 (1994) , p. 10, capítulo 6.4.1
- ↑ a b ECMA-35 (1994) , p. 11, capítulo 6.4.4
- ↑ a b c ECMA-35 (1994) , pág. 11, capítulo 6.4.2
- ^ ISO-IR-104 (1985)
- ^ ISO-IR-1 (1975)
- ↑ a b ECMA-35 (1994) , p. 19, capítulo 8.5.1
- ↑ a b ECMA-35 (1994) , p. 19, capítulo 8.5.2
- ^ ECMA-43 (1991) , p. 8, capítulo 7.6 ("Conjunto C1")
- ↑ a b ECMA-35 (1994) , p. 29, capítulo 13.2.1
- ↑ a b ECMA-35 (1994) , p. 12, capítulo 6.5.1
- ^ ECMA-35 (1994) , p. 12, capítulo 6.5.2
- ^ a b c ISO-IR , pág. 19, capítulo 2.7 ("Funciones de control único")
- ^ ECMA-35 (1994) , p. 12, capítulo 6.5.3
- ^ a b Moy, Edward; Gildea, Stephen; Dickey, Thomas. "Controles que comienzan con ESC" . Secuencias de control de XTerm .
- ↑ a b ECMA-35 (1994) , p. 14, capítulo 7.3, tabla 2
- ^ ISO-IR-14 (1975)
- ^ a b UIT-T (11 de agosto de 1995). Recomendación T.51 (1992) Enmienda 1 .
- ^ ISO-IR-106 (1985)
- ^ ECMA-35 (1994) , p. 15, capítulo 7.3, nota 23
- ^ ISO-IR-140 (1987)
- ^ ISO-IR-7 (1975)
- ^ ISO-IR-26 (1976)
- ^ ISO-IR-36 (1977)
- ^ ECMA-35 (1980) , pág. 8, capítulo 5.1.7
- ^ ISO-IR-105 (1985)
- ↑ a b c d ECMA-35 (1994) , pág. 17, capítulo 8.3.1
- ↑ a b c d ECMA-35 (1994) , pág. 23, capítulo 9.3.1
- ↑ a b c ECMA-35 (1994) , pág. 19, capítulo 8.4
- ↑ a b c ECMA-35 (1994) , pág. 17, capítulo 8.3.2
- ^ ECMA-35 (1994) , págs. 23-24, capítulo 9.4
- ^ ECMA-35 (1994) , p. 27, capítulo 11.1
- ^ ECMA-35 (1994) , p. 17, capítulo 8.3.3
- ^ ECMA-35 (1994) , p. 47, anexo B
- ^ ISO-IR , pág. 2, capítulo 1 ("Introducción")
- ^ ISO / IEC 2375 (2003)
- ^ ISO-IR , pág. 10, capítulo 2.2 ("Juego de caracteres gráficos de 94 caracteres con un segundo byte intermedio")
- ^ ARIB STD-B24 (2008) , p. 39, parte 2, tabla 7-3
- ^ Mascheck, Sven; Le Breton, Stefan; Hamilton, Richard L. "Acerca del 'juego de caracteres alternativo de dibujo de líneas ' " . ~ sven_mascheck / .
- ^ ECMA-35 (1994) , p. 36, capítulo 14.4
- ^ ECMA-35 (1994) , p. 36, capítulo 14.4.2, nota 48
- ^ ECMA-35 (1994) , p. 36, capítulo 14.4.2, nota 47
- ^ ETS 300706 (1997) , p. 103, capítulo 14 ("Caracteres redefinibles dinámicamente")
- ^ a b c d e f g h i j k l m n o p q ECMA-35 (1994) , págs. 35-36, capítulo 14.3.2
- ^ ISO / IEC 10646 (2017) , págs. 19-20, capítulo 12.4 ("Identificación del conjunto de funciones de control")
- ^ ECMA-35 (1994) , p. 32, tabla 5
- ^ a b c ECMA-35 (1994) , págs. 37-41, capítulo 15.2
- ^ ECMA-35 (1994) , p. 34, capítulo 14.2.2
- ^ ECMA-35 (1994) , p. 34, capítulo 14.2.3
- ^ Digital . "DECDWL — Línea de doble ancho y altura única" . Información del programador del terminal de vídeo VT510 .
- ^ Kawasaki, Yusuke (2010). "Codificar :: JP :: Emoji :: Codificación" . Codificar-JP-Emoji . Línea 268.
- ^ ECMA-35 (1994) , págs. 36-37, capítulo 14.5
- ^ ECMA-35 (1980) , págs. 14-15, capítulo 5.3.7
- ^ a b c d ISO-IR , pág. 20, capítulo 2.8.1 ("Sistemas de codificación con retorno estándar")
- ↑ a b c d ECMA-35 (1994) , págs. 41-42, capítulo 15.4
- ^ a b c d e ISO-IR , pág. 21, capítulo 2.8.2 ("Sistemas de codificación sin retorno estándar")
- ^ ECMA-35 (1994) , p. 41, capítulo 15.3
- ↑ a b c ISO / IEC 10646 (2017) , pág. 19, capítulo 12.2 ("Identificación de un esquema de codificación UCS")
- ^ ISO / IEC 10646 (2017) , págs. 18-19, capítulo 12.1 ("Propósito y contexto de identificación")
- ^ ISO-IR-196 (1996)
- ^ ISO-IR-192 (1996)
- ^ ISO-IR-195 (1996)
- ^ ISO / IEC 10646 (2017) , pág. 20, capítulo 12.5 ("Identificación del sistema de codificación de ISO / IEC 2022")
- ↑ a b c d e f RFC 1468 (1993)
- ^ a b c "Identificadores de página de códigos" . Centro de desarrollo de Windows . Microsoft.
- ^ a b Estándar de codificación WHATWG , sección 12.2 ("ISO-2022-JP")
- ^ Chang, Hye-Shik. "Módulos / cjkcodecs / _codecs_iso2022.c, línea 1122" . Árbol de fuentes de cPython . Fundación de software Python.
- ^ "Códecs - Registro de códecs y clases base § Codificaciones estándar" . Documentación de Python 3.7.4 . Fundación de software Python.
- ^ "2: Conjuntos de códigos y conversión de conjuntos de códigos" . Referencia técnica de DIGITAL UNIX para el uso de funciones japonesas . Corporación de equipos digitales , Compaq .
- ^ a b Lunde (2008) , págs. 236-238, Capítulo 4 ("Métodos de codificación"), sección "El predecesor de la codificación ISO-2022-JP: codificación JIS"
- ↑ RFC 1554 (1993)
- ^ RFC 2237 (1997)
- ↑ a b RFC 1557 (1993)
- ^ "KS X 1001: 1992" (PDF) .
- ^ ISO-IR-149 (1988)
- ↑ a b c d RFC 1922 (1996)
- ^ Estándar de codificación WHATWG , capítulo 4.2 ("Nombres y etiquetas"), ancla "reemplazo"
- ^ WHATWG Encoding Standard, section 14.1 ("replacement")
- ^ WHATWG Encoding Standard, section 2 ("Security background")
- ^ ECMA-43 (1991), pp. 9-10, chapter 8 ("Levels")
- ^ ISO-IR-105 (1985)
- ^ ECMA-43 (1985), pp. 7-11, chapter 7.3 ("The G0 set")
- ^ ECMA-43 (1991), pp. 6-8, chapter 7.4 ("G0 set")
- ^ ECMA-43 (1991), p. 11, chapter 10.3 ("Identification of a version")
- ^ a b ECMA-43 (1991), p. 23, annex E ("Main differences between the second edition (1985) and the present (third) edition of this ECMA Standard")
- ^ IPTC (1995). The IPTC Recommended Message Format (PDF) (5th ed.). IPTC TEC 7901.
- ^ ECMA-43 (1991), pp. 10, chapter 9.2 ("Unique coding of characters")
- ^ van Wingen, Johan W (1999). "8. Code Extension, ISO 2022 and 2375, ISO 4873 and 10367". Character sets. Letters, tokens and codes. Terena.
- ^ ECMA-43 (1991), pp. 10-11, chapter 10 ("Identification of version and level")
- ^ Lunde (2008), pp. 253-255, Chapter 4 ("Encoding Methods"), section "EUC versus ISO-2022 encodings".
- ^ IBM. "Character Data Representation Architecture (CDRA)". pp. 157–162.
- ^ DICOM PS3.2 2016d - Conformance; D.6.2 Character Sets; D.6 Support of Character Sets
- ^ "DICOM ISO 2022 variation".
- ^ a b Sivonen, Henri (2018-12-17). "(UNSUBMITTED DRAFT) No U+FFFD Generation for Zero-Length ASCII-State Content between ISO-2022-JP Escape Sequences" (PDF).
- ^ https://bugzilla.mozilla.org/show_bug.cgi?id=935453
- ^ WHATWG Encoding Standard, chapter 4.2 ("Names and labels"), anchor "replacement"
- ^ WHATWG Encoding Standard, section 14.1 ("replacement")
- ^ Davis, Mark; Suignard, Michel (2014-09-19). "3.6.2 Some Output For All Input". Unicode Technical Report #36: Unicode Security Considerations (revision 15). Unicode Consortium.
Standards and registry indices cited
- ARIB (2008). ARIB STD-B24: Data Coding and Transmission Specification for Digital Broadcasting (PDF) (ARIB Standard). 5.2-E1. 1. Archived (PDF) from the original on 2017-07-10. Retrieved 2017-07-10.
- ECMA (1980). ECMA-35: Extension of the 7-bit Coded Character Set (PDF) (ECMA Standard) (2nd ed.).
- ECMA (1994). ECMA-35: Character Code Structure and Extension Techniques (PDF) (ECMA Standard) (6th ed.).
- ECMA (1985). ECMA-43: 8-Bit Coded Character Set Structure and Rules (PDF) (ECMA Standard) (2nd ed.).
- ECMA (1991). ECMA-43: 8-Bit Coded Character Set Structure and Rules (PDF) (ECMA Standard) (3rd ed.).
- ECMA (2000). ECMA-144: 8-Bit Single-Byte Coded Graphic Character sets: Latin Alphabet No. 6 (PDF) (ECMA Standard) (3rd ed.).
- European Broadcasting Union (1997). ETS 300 706: Enhanced Teletext specification (PDF) (European Telecommunications Standards). ETSI.
- ISO/IEC JTC 1/SC 2 (2003). ISO/IEC 2375:2003: Information technology — Procedure for registration of escape sequences and coded character sets. ISO.
- ISO/IEC JTC 1/SC 2 (1998-02-12). ISO/IEC FDIS 8859-10: Information Technology — 8-bit single-byte coded graphic character sets — Part 10: Latin alphabet No. 6 (PDF) (Final Draft International Standard).
- ISO/IEC JTC 1/SC 2 (2017). ISO/IEC 10646: Information technology — Universal Coded Character Set (UCS) (ISO Standard) (5th ed.). ISO.
- ISO-IR: ISO/IEC International Register of Coded Character Sets To Be Used With Escape Sequences (PDF) (Registry Index). ITSCJ/IPSJ.
- van Kesteren, Anne. WHATWG Encoding Standard (WHATWG Living Standard). WHATWG.
Registered code sets cited
- ISO/TC 97/SC 2 (1975-12-01). ISO-IR-1: The set of control characters of the ISO 646 (PDF). ITSCJ/IPSJ.
- Sveriges Standardiseringskommission (1975-12-01). ISO-IR-7: NATS Control set for newspaper text transmission (PDF). ITSCJ/IPSJ.
- Japanese Industrial Standards Committee (1975-12-01). ISO-IR-14: The Japanese Roman graphic set of characters (PDF). ITSCJ/IPSJ.
- IPTC (1976-03-25). ISO-IR-26: Control set for newspaper text transmission (PDF). ITSCJ/IPSJ.
- ISO/TC 97/SC 2 (1977-10-15). ISO-IR-36: The set of control characters of ISO 646, with IS4 replaced by Single Shift for G2 (SS2) (PDF). ITSCJ/IPSJ.
- ISO/TC97/SC2/WG-7; ECMA (1985-08-01). ISO-IR-104: Minimum C0 set for ISO 4873 (PDF). ITSCJ/IPSJ.
- ISO/TC97/SC2/WG-7; ECMA (1985-08-01). ISO-IR-105: Minimum C1 Set for ISO 4873 (PDF). ITSCJ/IPSJ.
- ITU (1985-08-01). ISO-IR-106: Teletex Primary Set of Control Functions (PDF). ITSCJ/IPSJ.
- Úřad pro normalizaci a měřeni (1987-07-31). ISO-IR-140: The C0 Set of Control Characters of ISO 646, with EM replaced by SS2 (PDF). ITSCJ/IPSJ.
- Korea Bureau of Standards (1988-10-01). ISO-IR-149: Korean Graphic Character Set for Information Interchange (KS C 5601:1987) (PDF). ITSCJ/IPSJ.
- ISO/IEC/JTC1/SC2/WG3 (1990-04-16). ISO-IR-155: Basic Box-Drawings Set (PDF). ITSCJ/IPSJ.
- CCITT (1992-07-13). ISO-IR-164: Hebrew Supplementary Set of Graphic Characters (PDF). ITSCJ/IPSJ.
- ECMA (1996-04-22). ISO-IR-192: UCS Transformation Format (UTF-8), implementation level 3, without standard return (PDF). ITSCJ/IPSJ.
- ECMA (1996-04-22). ISO-IR-195: UCS Transformation Format (UTF-16), implementation level 3, without standard return (PDF). ITSCJ/IPSJ.
- ECMA (1996-04-22). ISO-IR-196: UCS Transformation Format (UTF-8), with standard return (PDF). ITSCJ/IPSJ.
- National Standards Authority of Ireland (1999-12-07). ISO-IR-208: Ogham coded character set for information interchange (PDF). ITSCJ/IPSJ.
Internet Requests For Comment cited
- Murai, J.; Crispin, M.; van der Poel, E. (1993). "RFC 1468: Japanese Character Encoding for Internet Messages". Requests for Comments. IETF. doi:10.17487/rfc1468.
- Ohta, M.; Handa, K. (1993). "RFC 1554: ISO-2022-JP-2: Multilingual Extension of ISO-2022-JP". Requests for Comments. IETF. doi:10.17487/rfc1554.
- Choi, U.; Chon, K.; Park, H. (1993). "RFC 1557: Korean Character Encoding for Internet Messages". Requests for Comments. IETF. doi:10.17487/rfc1557.
- Zhu, HF.; Hu, DY.; Wang, ZG.; Kao, TC.; Chang, WCH.; Crispin, M. (1996). "RFC 1922: Chinese Character Encoding for Internet Messages". Requests for Comments. IETF. doi:10.17487/rfc1922.
- Tamaru, K. (1997). "RFC 2237: Japanese Character Encoding for Internet Messages". Requests for Comments. IETF. doi:10.17487/rfc2237.
Other published works cited
- Lunde, Ken (2008). CJKV Information Processing (2nd ed.). O'Reilly Media. ISBN 9780596514471.CS1 maint: ref duplicates default (link)
Otras lecturas
- Lunde, Ken (1998). CJKV Information Processing. Cambridge, Massachusetts: O'Reilly & Associates. ISBN 1-56592-224-7.CS1 maint: ref duplicates default (link)
enlaces externos
- ISO/IEC 2022:1994
- ISO/IEC 2022:1994/Cor 1:1999
- ECMA-35, equivalent to ISO/IEC 2022 and freely downloadable.
- International Register of Coded Character Sets to be Used with Escape Sequences, a full list of assigned character sets and their escape sequences
- History of Character Codes in North America, Europe, and East Asia from 1999, rev. 2004
- Ken Lunde's CJK.INF: a document on encoding Chinese, Japanese, and Korean (CJK) languages, including a discussion of the various variants of ISO/IEC 2022.