La codificación de caracteres HZ [1] es una codificación de GB2312 que anteriormente se usaba comúnmente en correos electrónicos y publicaciones de USENET . Fue diseñado en 1989 por Fung Fung Lee ( chino :李楓 峰) de la Universidad de Stanford , y posteriormente codificado en 1995 en RFC 1843. [2]
MIME / IANA | HZ-GB-2312 |
---|---|
Idioma (s) | Chino simplificado , inglés , ruso |
Creado por | Fung Fung Lee |
Estándar | RFC 1843 |
Clasificación | Codificación CJK , armadura ASCII , codificación de ancho variable , codificación con estado |
Transforma / Codifica | GB 2312 |
Precedido por | zW |
Sucesor | Imprimible entre comillas , UTF-7 , 8BITMIME |
El HZ, abreviatura de Hanzi ( chino simplificado :汉字; chino tradicional :漢字; literalmente, 'caracteres chinos'), la codificación se inventó para facilitar el uso de caracteres chinos a través del correo electrónico, que en ese momento solo permitía caracteres de 7 bits. . Por lo tanto, en lugar de las secuencias de escape estándar ISO 2022 (como en el caso de ISO-2022-JP ) o los caracteres de 8 bits (como en el caso de EUC ), el código HZ utiliza solo caracteres imprimibles de 7 bits para representar el chino. caracteres.
También fue popular en las redes de USENET, que a fines de la década de 1980 y principios de la de 1990, generalmente no permitían la transmisión de caracteres de 8 bits o caracteres de escape.
Historia
HZ reemplazó la codificación "zW" anterior, que marcaba líneas completas como texto GB2312 comenzando con los caracteres zW
. [3]
Estructura y uso
En el sistema de codificación HZ, las secuencias de caracteres "~ {" y "~}" actúan como secuencias de escape; cualquier cosa entre ellos se interpreta como chino codificado en GB2312 (se ignoran los bits más significativos). Fuera de las secuencias de escape, se supone que los caracteres son ASCII .
Un ejemplo ayudará a ilustrar la relación entre GB2312 , EUC-CN y el código HZ:
Formulario | Código | Con secuencias de escape | Observaciones |
---|---|---|---|
Kuten / Quwei /区位forma | 5027 | - | Zona / sala / fila (ku / qū /区) 50, punto (diez / wèi /位) 27 |
Formulario ISO 2022 | 52 16 3B 16 | 0E 16 52 16 3B 16 0F 16 | 50 + 32 = 82 = 52 16 |
Formulario EUC-CN | D2 16 BB 16 | D2 16 BB 16 | 52 16 ∨ 80 16 = D2 16 |
Forma HZ (estándar) | 52 16 3B 16 | 7E 16 7B 16 52 16 3B 16 7E 16 7D 16 | Aparece como ~ {R; ~} sin decodificador HZ |
Forma HZ (alternativa) | D2 16 BB 16 | 7E 16 7B 16 D2 16 BB 16 7E 16 7D 16 | Forma EUC aceptable para al menos algunos decodificadores |
HZ se diseñó originalmente para usarse únicamente como un código de 7 bits. Sin embargo, cuando las situaciones lo permiten, las secuencias de escape "~ {" y "~}" a veces rodean a los caracteres representados en EUC-CN; este uso alternativo permite que el chino sea legible con la ayuda del software decodificador HZ o con un sistema que comprenda EUC-CN.
Además, la especificación define que:
- la secuencia "~~" debe tratarse como si codificara un solo ASCII "~" y,
- el carácter "~" seguido de una nueva línea debe descartarse.
Sin embargo, no todos los decodificadores HZ siguen estas dos reglas.
Codificadores y decodificadores HZ
El primer codificador y decodificador HZ fue escrito en 1989 por el inventor del código para el sistema operativo Unix . [4]
La El programa hztty , también para el sistema operativo Unix , también fue uno de los primeros y uno de los decodificadores HZ más populares. Se desvía de la especificación en que mostrará las secuencias de escape (es decir, "~ {" y "~}"), y no trata "~~" y "~" seguidos por una nueva línea especialmente. Esto probablemente fue para permitir que el software que asume que un carácter ocupe una posición de pantalla (en una pantalla de texto) funcione correctamente sin modificaciones.
El soporte para Microsoft Windows llegó más tarde, y varios "sistemas chinos" de terceros son compatibles con HZ. Estos sistemas pueden ofrecer una opción para ocultar las secuencias de escape.
Desventajas
Debido a sus secuencias de escape, y además porque sus delimitadores de escape son caracteres imprimibles en ASCII, es bastante fácil construir secuencias de bytes de ataque que viajen de ida y vuelta desde HZ a Unicode y viceversa. Por lo tanto, las suites de protección contra malware tratan el uso de la codificación HZ como sospechoso. [5] [se necesita una mejor fuente ]
Referencias
- ^ "HZ - un formato de datos para intercambiar archivos de caracteres chinos y ASCII arbitrariamente mezclados" . Archivado desde el original el 27 de octubre de 2005.
- ^ RFC 1843
- ^ Lunde, Ken (18 de diciembre de 1995). "CJK.INF Versión 1.9" .
- ^ "Paquete HZ 2.0 - Especificación HZ, codificador de referencia y código fuente del decodificador" .
- ^ https://bugzilla.mozilla.org/show_bug.cgi?id=935453