2008-10-21 7 views
11

¿Cómo difiere el conjunto de códigos GB18030 chino de Unicode?¿Cómo se diferencia GB18030 de Unicode?

¿Qué técnicas especiales se requieren para manipular GB18030?

¿Hay alguna biblioteca (de código abierto) para manejar GB18030?

+3

confunde conjuntos de caracteres (como Unicode) con esquemas de codificación de caracteres (como GB18030, ISO Latin-1..15, UTF- [7,8,16,32]). – Sebastian

Respuesta

13

Según el Wikipedia article on GB18030, "GB18030 se puede considerar un formato de transformación Unicode (es decir, una codificación de todos los puntos de código Unicode) que mantiene la compatibilidad con un conjunto de caracteres heredado". Es decir, todos los caracteres Unicode se pueden codificar en GB18030, pero se codificarán con secuencias de bytes diferentes de las que se generarían con UTF-8 o UTF-16. El manejo de la codificación GB18030 no requiere más técnicas especiales que las requeridas para cualquier otra codificación que no sea Unicode.

La ICU project es una biblioteca de código abierto (para C o Java) que tiene soporte completo para muchas codificaciones diferentes, incluyendo GB18030. La información sobre la conversión entre diferentes codificaciones con ICU se puede encontrar en here.

+0

Gracias por la información. Soy medianamente consciente de la UCI; Sin embargo, no sabía que también manejaba GB18030. –

+1

Wikipedia está equivocada al decir que "GB18030 se puede considerar un formato de transformación Unicode". Quien escribió eso no entiende el significado o "Formato de transformación". Uno podría considerar que es válido si hubiera una forma algorítmica para mapear entre GB18030 y Unicode, sin una tabla de mapeo. Si están involucradas tablas de mapeo, entonces las dos son solo dos codificaciones independientes que pueden cubrir el mismo conjunto de caracteres. Igual que KOI8-R no es un "Formato de Transformación" de iso-8859-5, y Shift-JIS no es un "Formato de Transformación" de EUC-JP –

+4

@MihaiNita: Según el glosario de Unicode, un [formato de transformación] (http://unicode.org/glossary/#transformation_format) es un "mapeo de una secuencia de caracteres codificados a una secuencia única de unidades de código (típicamente bytes)", y una [secuencia de caracteres codificados] (http://unicode.org/glossary/# coded_character_sequence) es una "secuencia ordenada de uno o más puntos de código". Siempre que haya una asignación de cada punto de código Unicode a una serie de bytes, parece que se puede considerar un "formato de transformación Unicode". –

12

¿Qué técnicas especiales se requieren para manipular GB18030?

Lo más importante a tener en cuenta es que, a diferencia de UTF-8, GB18030 permite que ocurran bytes ASCII dentro de la codificación de un carácter de múltiples bytes. (Por ejemplo, 'ß' está codificado como los bytes 81 , que contiene la codificación ASCII de '0' y '8'). Esto significa que no puede usar un find orientado a bytes simple/index función.

Cuestiones relacionadas