KS X 1001 , " Código para el intercambio de información (hangul y hanja) ", [d] [1] anteriormente llamado KS C 5601 , es un estándar de conjunto de caracteres codificados de Corea del Sur para representar caracteres hangul y hanja en una computadora.
El código KS X 1001 se basa en las codificaciones de caracteres heredadas (pre- Unicode ) más comunes para el coreano , incluidas EUC-KR y el Código Hangul Unificado (UHC) de Microsoft . Contiene sílabas del Hangul coreano , ideogramas CJK (Hanja), griego , cirílico , japonés ( Hiragana y Katakana ) y algunos otros caracteres.
KS X 1001 está organizado como una tabla de 94×94, siguiendo la estructura de palabras de código de 2 bytes en ISO 2022 y EUC . Por lo tanto, sus puntos de código son pares de números enteros del 1 al 94. Sin embargo, algunas codificaciones (UHC y Johab ), además de proporcionar códigos para cada punto de código, proporcionan códigos adicionales para caracteres que de otro modo solo se podrían representar como secuencias de puntos de código.
Esta norma se conocía anteriormente como KS C 5601. Ha habido varias revisiones de esta norma. Por ejemplo, hubo revisiones en 1987, 1992, 1998 y 2002.
El actual conjunto de caracteres de doble byte Wansung ( 완성 ; Wanseong ; lit. precomposición) [1] fue estandarizado por la tercera edición de KS C 5601, [2] que se publicó en 1986. [3] Es una codificación compatible con ISO 2022 , típicamente utilizada en formato EUC , que asigna códigos de doble byte para sílabas no Hangul, Hangul jamo y las más comunes Hangul, en contraste con Johab ( 조합 ; Johap ; lit. combinación) [1] que no es compatible con ISO 2022, pero asigna códigos de doble byte a todas las sílabas Hangul usando jamo moderno. [2] Wansung es técnicamente una codificación de longitud variable, que permite representar otras sílabas con secuencias de ocho bytes (usando el jamo y el carácter Hangul Filler), pero esta característica no siempre se implementa. [4]
La primera edición de KS C 5601, publicada en 1974, [2] definió un conjunto de caracteres de longitud variable [2] de 7 bits que asignaba puntos de código de un solo byte a 51 [3] caracteres Hangul jamo básicos , de forma algo análoga a JIS C 6220 , en una codificación conocida como "Hangul de N-bytes". [5] La segunda edición, publicada en 1982, mantuvo el conjunto de caracteres principal de la edición de 1974, pero definió dos conjuntos complementarios, incluida una versión de Johab. Ninguna edición fue adoptada tan ampliamente como se pretendía. [2]
Wansung se mantuvo sin cambios en las ediciones de 1987 y 1992. En la edición de 1992, se agregó material adicional en los anexos, [3] incluyendo la definición de la codificación Johab [6] en el anexo 3, y la codificación Hangul de N-bytes más antigua en el anexo 4. [1] [5] Se publicó en respuesta al uso industrial de Johab como una codificación competitiva a Wansung, siendo utilizada en ese momento por Hangul Word Processor . Después de la introducción del Código Hangul Unificado por Microsoft en Windows 95 , y de que Hangul Word Processor abandonara Johab a favor de Unicode en 2000, Johab dejó de usarse comúnmente. [2]
Los esquemas de codificación de KS X 1001 incluyen EUC-KR (en variantes basadas en ASCII e ISO 646 -KR, la última de las cuales incluye un signo de moneda won ( ₩ ) en el byte 0x 5C en lugar de una barra invertida) e ISO-2022-KR , [7] así como ISO-2022-JP-2 (que también codifica JIS X 0208 y JIS X 0212 ). Todos estos tienen el inconveniente de que solo asignan códigos para las 2350 sílabas Hangul precompuestas que tienen sus propios puntos de código KS X 1001 (de un total de 11172, sin contar los que usan jamo obsoleto), y requieren que otros usen secuencias de composición de ocho bytes, que no son compatibles con algunas implementaciones parciales del estándar. [4]
La codificación Johab (estipulada en el anexo 3 de la versión de 1992 del estándar) y el superconjunto EUC-KR conocido como Código Hangul Unificado (UHC, también llamado Windows-949) proporcionan códigos únicos para las 11172 sílabas Hangul. [7] [6] ISO-2022-KR y Johab se utilizan raramente. Algunos sistemas operativos extienden este estándar en otras formas no uniformes, por ejemplo, las extensiones EUC-KR MacKorean en el Mac OS clásico e IBM-949 de IBM .
El carácter de relleno Hangul se utiliza para introducir secuencias de composición Hangul de ocho bytes [8] [9] y para reemplazar un elemento ausente (normalmente un final vacío) en dicha secuencia. [9]
Unicode incluye el código Wansung Hangul Filler en el bloque Jamo de compatibilidad Hangul para compatibilidad de ida y vuelta, pero utiliza su propio sistema (con sus propios caracteres de relleno, utilizados de forma diferente) para componer Hangul. El sistema de composición Hangul KS X 1001 no se utiliza en Unicode, y el relleno se representa simplemente como un espacio vacío; las secuencias de composición KS X 1001 que utilizan jamo moderno pueden asignarse a caracteres precompuestos en Unicode. [9] Esto no suele hacerse con el Código Hangul Unificado .
Para compatibilidad de ida y vuelta, Unicode también incluye el código Hangul de N bytes Hangul Filler por separado en el bloque de Formularios de Ancho Medio y Ancho Completo , llamado "Halfwidth Hangul Filler".
A continuación se muestran los cuadros de códigos para KS X 1001 en formato Wansung. Cuando se proporciona un par de números hexadecimales, se utiliza el más pequeño cuando se codifica sobre GL (0x21-0x7E), como en ISO-2022-KR cuando se ha cambiado el conjunto coreano, y el más grande se utiliza en el caso más típico de que se codifique sobre GR (0xA1-0xFE), como en EUC-KR o UHC. Johab cambia la disposición para codificar todos los 11172 grupos de Hangul por separado y en orden.
Para ilustrar las diferencias de implementación entre proveedores, se muestran múltiples asignaciones Unicode para algunos caracteres. Se muestran las extensiones HangulTalk de Apple para el plano Wansung (es decir, donde ambos bytes están en el rango 0xA1-0xFE), pero no otros rangos de extensión HangulTalk. Los códigos adicionales para sílabas compuestas en el Código Hangul Unificado y las extensiones de IBM en IBM-949 tampoco se muestran, ya que ambos quedan fuera del plano Wansung.
Las filas 41 y 94 pueden utilizarse para fines definidos por el usuario. [10]
Este conjunto contiene signos de puntuación y otros símbolos, excepto los signos de puntuación presentes en KS X 1003 (que se incluyen en la fila 3). Las codificaciones que combinan KS X 1001 con ASCII de un solo byte pueden utilizar una asignación Unicode alternativa al bloque de formas Halfwidth y Fullwidth para la barra invertida. La asignación Unicode de la raya ondulada (raya tilde) también difiere entre proveedores, y puede ser U+301C (preferida por IBM y Apple) [11] [12] [13] o U+223C (preferida por Microsoft). [14] [15] Compare el manejo similar pero no idéntico de la raya ondulada JIS y el manejo de la tilde en la siguiente fila.
A excepción de la barra invertida, si se muestran dos asignaciones a continuación, la primera la utiliza Apple y la segunda la utiliza Microsoft. [13] [15]
Este conjunto contiene signos de puntuación y símbolos adicionales. De manera similar al carácter de tilde de la fila anterior, Apple y Microsoft utilizan asignaciones diferentes para el carácter de tilde de esta fila (U+02DC de Apple, FF5E de Microsoft), [13] [15] que está destinado a mostrarse como una tilde en relieve, mientras que la tilde de la fila anterior está destinada a mostrarse en línea a la altura del guión. [10] La asignación del punto en un círculo también difiere. [13] [15]
El símbolo del euro y de la marca registrada se añadieron al estándar en 1998, mientras que la marca postal coreana (㉾) se añadió en 2002. [1] Estos tres puntos de código, al igual que los puntos de código que aún no se utilizan, han sido utilizados para otros fines no estándar por los proveedores, por ejemplo, para los marcadores de listas en caja de Apple. [16] Microsoft actualizó su implementación del Código Hangul Unificado para añadir las incorporaciones de 1998, incluido el símbolo del euro, pero no añadió la marca postal coreana cuando se añadió al estándar. [17]
Este conjunto corresponde a KS X 1003 (la variante ISO 646 para coreano, un conjunto similar a ASCII ), pero como códigos de dos bytes precedidos por 0x23 (o 0xA3 en formato GR-invocado (EUC)). Incluye el alfabeto inglés / alfabeto latino básico , numerales árabes occidentales y puntuación.
Compare el conjunto romano de JIS X 0201 , que se diferencia por incluir un signo de yen en lugar de un signo de won . Compare las terceras filas de KPS 9566 y de JIS X 0208 , que siguen el diseño ISO 646 pero solo incluyen letras y dígitos.
Las codificaciones como EUC-KR y UHC combinan KS X 1001 con ASCII de un solo byte o KS X 1003 y, por lo tanto, utilizan asignaciones Unicode alternativas al bloque de formas de ancho medio y ancho completo para las representaciones de doble byte de estos caracteres.
Este conjunto incluye consonantes modernas del hangul, seguidas de vocales, ambas ordenadas según las costumbres de intercalación de Corea del Sur, seguidas de consonantes obsoletas. Cuando se usan individualmente, estos caracteres se asignan al bloque Jamo de compatibilidad con Hangul de Unicode , y no tienen una asignación uno a uno con los caracteres específicos de posición en el bloque Jamo de Hangul . Compárese con la fila 4 del KPS 9566 de Corea del Norte . El carácter 04-52 es un relleno de Hangul (ver arriba), que se usa para combinar secuencias.
Este conjunto contiene números romanos y soporte básico para el alfabeto griego , sin diacríticos ni sigma final . Apple incluye algunos signos de puntuación adicionales en esta fila, así como algunos marcadores de lista en círculos negros que continúan a partir de los de la fila 6. [16]
Contraste la fila 6 de KPS 9566 , que incluye los mismos caracteres pero con un diseño diferente.
Esta fila contiene caracteres para dibujar cuadros en un contexto semigráfico . Apple también incluye algunos marcadores de lista en círculos negros. [16]
Esta fila contiene símbolos de unidad como caracteres individuales, incluidos aquellos que constan de varias letras. Apple también incluye algunos marcadores de lista en círculos que continúan a partir de los de la fila 8. [16]
Compare y contraste con el repertorio de símbolos de unidad incluidos en la fila 8 de KPS 9566 .
Este conjunto contiene hiragana para escribir en japonés . Apple también incluye algunos marcadores de lista entre corchetes que continúan a partir de los de la fila 9. [16]
Compare la fila 10 de KPS 9566 , que utiliza el mismo diseño. Compare y contraste la fila 4 de JIS X 0208 , que también utiliza el mismo diseño, pero en una fila diferente.
Este conjunto contiene katakana para escribir en japonés . Sin embargo, no se incluye el signo de vocal larga japonés , que se utiliza en texto katakana y se incluye en la fila 1 de JIS X 0208. [20] Apple también incluye algunos marcadores de lista entre corchetes que continúan desde los de las filas 9 y 10. [16]
Compare la fila 11 de KPS 9566 , que utiliza el mismo diseño. Compare y contraste la fila 5 de JIS X 0208 , que también utiliza el mismo diseño, pero en una fila diferente.
Este conjunto contiene el alfabeto ruso moderno y no es necesariamente suficiente para representar otras formas de escritura cirílica . Apple también incluye algunos marcadores de lista en recuadros negros. [16]
Compare la fila 5 de KPS 9566 y la fila 7 de JIS X 0208 , que utilizan el mismo diseño (pero en una fila diferente).
Los puntos de código para el hangul precompuesto se incluyen en un bloque ordenado continuo entre los puntos de código 16-01 y 40-94 inclusive. No todos los grupos de sílabas posibles están incluidos en este rango. Compare los diferentes ordenamientos y disponibilidad en KPS 9566 .
Las sílabas iniciales+vocal+final 뢨, 썅, 쏀, 쓩 y 쭁 están incluidas, pero sus contrapartes iniciales+vocal 뢔, 쌰, 쎼, 쓔 y 쬬 no. Esto puede causar un problema con la entrada, porque los métodos de entrada tienen que pasar primero por una sílaba inicial+vocal para poder llegar a una sílaba inicial+vocal+final (por ejemplo, ㅎ → 하 → 한).
Los que no se enumeran aquí se pueden representar mediante secuencias de composición de ocho bytes. Todos los demás grupos de jamo modernos reciben códigos asignados por UHC en otros lugares. Johab asigna códigos a todos los posibles grupos de jamo modernos.
KS X 1001 codifica varios Hanja con múltiples lecturas varias veces. Un carácter, 樂, se codifica cuatro veces. Los primeros 268 caracteres (U+F900–U+FA0B) del bloque de ideogramas de compatibilidad CJK corresponden a estos duplicados.
En la siguiente tabla, el valor de la primera celda de la fila (y la lectura) de cada Hanja se asigna al bloque de ideogramas unificados de CJK ; los demás se asignan al bloque de ideogramas de compatibilidad de CJK.
Desde 1992, KS X 1001 también define una codificación alternativa conocida como Johab. Esta representa una sílaba Hangul como la secuencia de tres valores de cinco bits, divididos en dos bytes de 8 bits , con el bit más significativo primero. El bit más significativo del byte principal siempre está establecido (lo que permite la combinación con ASCII de un solo byte o KS X 1003). Esta codificación también se utiliza para el jamo moderno a partir de la fila 4 de KS X 1001, utilizando los valores de relleno para los otros componentes. La codificación Johab para Hangul se muestra en la siguiente tabla. [22]
Johab codifica el resto de KS X 1001 utilizando bytes iniciales que no corresponden a un jamo inicial (0xE0–0xF9 para Hanja y 0xD9–0xDE [23] para no Hanja, excluyendo sílabas Hangul y jamo moderno), con bytes finales en los rangos 0x31–0x7E y 0x91–0xFE. [22] Estos códigos se asignan algorítmicamente a partir de los puntos de código KS X 1001 de los caracteres, [23] con dos filas KS X 1001 por byte inicial (compare y contraste Shift JIS ).
La codificación Johab basada en ASCII está numerada como Página de códigos 1361 por Microsoft. [24] También existen otras variantes de Johab definidas por el proveedor; por ejemplo, IBM define una para usarla como un conjunto Shift Out con EBCDIC . Esa variante usa shift in y shift out para cambiar entre una página EBCDIC de un solo byte y Johab, usa una codificación diferente para los caracteres que no son Hangul (usando los bytes iniciales 0x40–6C con un diseño diferente), y usa los bytes iniciales 0xD4–DD como una región definida por el usuario , pero usa el mismo diseño Johab que el estándar de 1992 para los caracteres Hangul cuando están en estado shift-out. [25] IBM numera la codificación Johab con estado basada en EBCDIC como Página de códigos 1364 , [25] y también define un subconjunto de esa codificación, que incluye menos caracteres Hangul pero en el mismo diseño, como Página de códigos 933. [26 ]
Algunos otros proveedores como Samsung o GoldStar (ahora LG ) utilizaron otras codificaciones "Johab" donde las asignaciones de códigos de cinco bits a jamo difieren de las siguientes, y en consecuencia no son compatibles con el estándar Johab de 1992. [af] La siguiente tabla corresponde al estándar de 1992 y también al uso de IBM.
Este es el código Hangul de N bytes, [5] como se especifica en KS C 5601-1974 y en el anexo 4 de KS C 5601–1992. La segunda mitad de la página de códigos 1040 de IBM [27] es un superconjunto de este, asignando los caracteres ¢¬\~
(aunque no £
) a las mismas ubicaciones que en la página de códigos 1041 , mientras que el Hangul de N bytes no extendido (además de los gráficos de reemplazo de código de control C0 en algunos contextos de uso, compartido con IBM-1040) es la página de códigos 891. [ 28] El carácter 0x40/0xC0 es un relleno Hangul (ver arriba), utilizado para combinar secuencias.
De manera similar a su contraparte japonesa JIS C 6220 (JIS X 0201), el código Hangul de N bytes podría usarse como una codificación de 7 bits, con asignaciones de caracteres en el rango de 0x 40 a 0x7C. [5] El gráfico a continuación muestra el código en un entorno de 8 bits con el bit alto establecido (es decir, en 0xC0 a 0xFC), como se usa, por ejemplo, en la página de códigos 891 o 1040.