GBK es una extensión del conjunto de caracteres GB 2312 para caracteres chinos simplificados , utilizado en la República Popular China . Incluye todos los caracteres CJK unificados que se encuentran en GB 13000.1-93 , es decir, ISO/IEC 10646:1993 o Unicode 1.1. Desde su lanzamiento inicial en 1993, GBK ha sido ampliado por Microsoft en la página de códigos 936/1386 , que luego se amplió a GBK 1.0 . GBK también es el nombre de Internet registrado por la IANA para la asignación de Microsoft, [1] que difiere de otras implementaciones principalmente por el símbolo del euro de un solo byte en 0x80.
GB es la abreviatura de Guójiā Biāozhǔn , que significa estándar nacional en chino, mientras que K significa Extensión (扩展kuòzhǎn ). GBK no solo amplió el antiguo estándar GB 2312 con caracteres chinos tradicionales, sino también con caracteres chinos que se simplificaron después del establecimiento de GB 2312 en 1981. Con la llegada de GBK, ciertos nombres con caracteres que antes no se podían representar, como el carácter 镕 ( róng ) en el nombre del ex primer ministro chino Zhu Rongji , ahora son representables. [2]
A partir de octubre de 2022 [actualizar], GBK es la tercera codificación más popular servida desde China y territorios (después de UTF-8 y el subconjunto GB 2312 ), con un 1,9 % de servidores web que sirven una página que declara GBK. [3] Sin embargo, todos los navegadores web principales decodifican los documentos marcados con GB2312 como si estuvieran marcados como GBK, excepto Safari y Edge en la etiqueta GB_2312
. [4] Juntas, las codificaciones GBK y GB 2312 tienen una presencia combinada del 5,5 % en China y territorios. [3] A nivel mundial, GBK representa menos del 0,07 % de todas las páginas web y GBK + GB2312 el 0,2 %. [5]
En 1993 se publicó el estándar Unicode 1.1, que incluía 20.902 caracteres utilizados en China continental , Taiwán , Japón y Corea . A continuación, China publicó GB 13000.1-93 , el estándar Guobiao equivalente a Unicode 1.1.
El conjunto de caracteres GBK se definió en 1993 como una extensión de GB 2312-80 , aunque también incluía los caracteres de GB 13000.1-93 a través de los puntos de código no utilizados disponibles en GB 2312. Por lo tanto, GBK es compatible con versiones anteriores de GB 2312. GBK se definió en un anexo normativo a GB 13000.1-93. [6]
Microsoft implementó GBK en Windows 95 y Windows NT 3.51 como página de códigos 936. Si bien GBK nunca fue un estándar oficial, el uso generalizado de Windows 95 llevó a que GBK se convirtiera en el estándar de facto . Si bien GBK incluía todos los caracteres chinos definidos en Unicode 1.1 y GB 13000.1-93, estos estándares usaban tablas de códigos diferentes. La razón principal de su existencia fue simplemente cerrar la brecha entre GB 2312-80 y GB 13000.1-93.
En 1995, el Comité Técnico de Normalización de Tecnología de la Información Nacional de China estableció la Especificación de Extensión de Código Interno Chino ( chino :汉字内码扩展规范 (GBK) ; pinyin : Hànzì Nèimǎ Kuòzhǎn Guīfàn (GBK) ), Versión 1.0, conocida como GBK 1.0 , que es una ligera extensión de la página de códigos 936. Los 95 caracteres recién agregados no se encontraron en GB 13000.1-1993, y se les asignaron provisionalmente puntos de código PUA Unicode . [7] : 534
Más tarde, Microsoft agregó el símbolo del euro a la página de códigos 936 y le asignó el código 0x80. Este no es un punto de código válido en GBK 1.0.
En 2000, se publicó el estándar GB 18030-2000 , que sustituyó pero mantuvo la compatibilidad con GBK 1.0. Aumentó el número de definiciones de caracteres chinos y amplió el número de caracteres posibles mediante la implementación de espacios de caracteres de cuatro bytes. El subconjunto de GB 18030 que consta de caracteres de uno y dos bytes a veces también se conoce como GBK . Sin embargo, la asignación a Unicode ha cambiado ligeramente, ya que algunos caracteres ahora se definen en Unicode. En la forma más actualizada del estándar, GB 18030-2005, solo 24 [8] caracteres aún se asignan a Unicode PUA (consulte GB 18030#PUA ).
En 2002, GBK se registró como un conjunto de caracteres IANA; el registro utiliza la asignación de la página de códigos 936, así como alias CP936/MS936, pero hace referencia a la especificación GBK 1.0. [1] La recomendación técnica del W3C publicada en 2015 [9] define un codificador GBK como un codificador GB 18030 con un símbolo de euro de un solo byte y sin secuencias de cuatro bytes (mientras que la especificación del decodificador GBK del W3C no tiene tal limitación, decodifica como GB 18030 , es decir, con el mismo rango de letras que todo Unicode ).
Un carácter se codifica en 1 o 2 bytes. Un byte en el rango 00
– 7F
es un byte único que significa lo mismo que en ASCII . Estrictamente hablando, hay 95 caracteres y 33 códigos de control en este rango.
Un byte con el bit alto activado indica que es el primero de 2 bytes. En términos generales, el primer byte está en el rango 81
– FE
(es decir, nunca 80
o FF
), y el segundo byte está 40
– A0
excepto 7F
para algunas áreas y A1
– FE
para otras.
Más específicamente, se definen los siguientes rangos de bytes:
En forma gráfica, la siguiente figura muestra el espacio de todos los códigos de 2 bytes posibles de 64K. Las áreas verdes y amarillas son puntos de código GBK asignados, las rojas son para caracteres definidos por el usuario. Las áreas sin color son combinaciones de bytes no válidas.
Las áreas indicadas en la sección anterior como GBK/1 y GBK/2, tomadas por sí solas, son simplemente GB 2312-80 en su codificación habitual, siendo GBK/1 la región no hanzi y GBK/2 la región hanzi. GB 2312, o más propiamente su codificación EUC-CN, toma un par de bytes del rango A1
– FE
, como cualquier conjunto de caracteres ISO-2022 94² cargado en GR. Esto corresponde al cuarto inferior derecho de la ilustración anterior. Sin embargo, GB 2312 no asigna ningún punto de código a las filas ubicadas en AA
– B0
y F8
– FE
, a pesar de que había delimitado el territorio. GBK agregó extensiones a estas filas. Puede ver que los dos espacios vacíos se rellenaron con áreas definidas por el usuario.
Más significativamente, GBK amplió el rango de bytes. Tener caracteres de dos bytes en el rango GR ISO-2022 da un límite de 94²=8.836 posibilidades. Abandonando el modelo ISO-2022 de regiones estrictas para caracteres gráficos y de control, pero conservando la característica de que los bytes bajos son caracteres de 1 byte y pares de bytes altos que denotan un carácter, podría tener potencialmente 128²=16.384 posiciones. GBK participa de eso, extendiendo el rango de A1
– FE
(94 opciones para cada byte) a 81
– FE
(126 opciones) para el primer byte y 40
– FE
(191 opciones) para el segundo byte, para un total de 24.066 posiciones.
La página de códigos 936 de Microsoft generalmente se considera GBK. [1] Sin embargo, los 95 caracteres PUA agregados en GBK 1.0 no están incluidos en la página de códigos 936. La página de códigos 936 también tiene un símbolo de euro de un solo byte en 0x80 que GBK 1.0 no tiene. [10]
El sucesor de GBK, GB 18030-2000 , utiliza el rango restante disponible para el segundo byte ( 30
– 39
) para expandir aún más el número de posibilidades mientras conserva GBK como un subconjunto.
Los caracteres de descripción ideográfica se encuentran en GBK, una extensión de GB 2312-80 que agregó los 20.902 ideogramas de Unicode versión 1.1 que no estaban incluidos en GB 2312-80. GBK se define como un anexo normativo de GB 13000.1-93.