La página de códigos IBM 949 (IBM-949) es una codificación de caracteres que IBM ha utilizado para representar texto en idioma coreano en las computadoras. Es una codificación de ancho variable que representa los caracteres del código Wansung definido por el estándar surcoreano KS X 1001 en un formato compatible con EUC-KR , pero agrega extensiones de IBM para hanja adicionales, sílabas Hangul precompuestas adicionales y definidas por el usuario. caracteres .
Al proporcionar valores en hexadecimal , los bytes 0x00 a 0x7F se utilizan para caracteres KS X 1003 ( ISO 646 : KR) de un solo byte, un conjunto similar a ASCII pero con un signo ganado en lugar de una barra invertida. Los bytes 0x80 a 0x84 se utilizan para caracteres de extensión de un solo byte de IBM. Los bytes iniciales 0x8F a 0xA0 se utilizan para caracteres de extensión de doble byte de IBM. Los bytes iniciales 0xA1 a 0xFE se utilizan para el código Wansung ( caracteres KS X 1001 en formato EUC-KR, doble byte), pero con algo de espacio no utilizado abierto para uso definido por el usuario.
Aunque a veces ambos se denominan "cp949", IBM-949 es diferente de la página de códigos 949 de Windows (IBM-1363), que es el Código Hangul Unificado de Microsoft, una extensión diferente de EUC-KR. Tampoco debe confundirse con la implementación de IBM de EUC-KR simple ( IBM-970 ). La página de códigos 949 en OS/2 es la página de códigos de IBM; sin embargo, existe un parche de terceros para cambiar esto. [1]
Tanto IBM-949 como Unified Hangul Code (Windows-949) se conocen como "página de códigos 949" (o "cp949") aunque sólo comparten el subconjunto EUC-KR. Tampoco tiene una etiqueta estandarizada registrada por la IANA para identificarlo. Aunque UHC está incluido en el estándar de codificación WHATWG , [2] con etiquetas que incluyen "windows-949", [3] IBM-949 no. Por lo tanto, IBM-949 no está permitido en HTML5 .
Aunque el significado de la etiqueta "ibm-949" (y a la inversa, "windows-949" y "ms949") no es ambiguo cuando se admiten estas etiquetas, la interpretación de las etiquetas de codificación "949" y "cp949" varía, en consecuencia, entre implementaciones. Por ejemplo, Componentes Internacionales para Unicode utiliza "cp949", "949", "ibm-949" y "x-IBM949" para referirse a IBM-949, [4] y además las etiquetas "cp949c", "ibm-949c" y "x-IBM949C" para referirse a una variante que utiliza asignaciones ASCII sin modificar para 0x20–7E (lo que resulta en asignaciones duplicadas para la barra invertida), [5] mientras que (de las etiquetas que incorporan el número de página de códigos 949) solo "ms949" y "Windows-949" están asignados a UHC. [6] Esto contrasta con Python , que reconoce tanto "cp949" como "949" (además de los más explícitos "ms949" y "uhc", pero no "windows-949") como etiquetas para UHC, y no No incluye un códec IBM-949. [7] La página de códigos 949 utilizada por las versiones en idioma coreano de OS/2 es la página de códigos de IBM; Para agregar soporte para todo el conjunto Unicode de sílabas coreanas, existe un parche de terceros para reemplazarlo con la página de códigos de Microsoft. [1]
IBM-949 es una codificación de ancho variable definida como la combinación de dos páginas de códigos de ancho fijo , la página de códigos de un solo byte 1088 y la página de códigos de doble byte 951 . [8] [9] [10]
Una versión de la página de códigos 951 (un código DBCS-PC, es decir, de doble byte, no EUC , no EBCDIC ), el componente de doble byte para IBM-949, se define en la revisión de septiembre de 1992 de la Especificación corporativa de IBM CH 3- 3220-125, junto con la página de códigos 834 (un código DBCS-Host, es decir, EBCDIC de doble byte), que es el componente de doble byte de la página de códigos 933 . [11] Esta versión de la página de códigos 949/951 consideraba que todo el rango de bytes iniciales 0x8F-A0 era una región definida por el usuario e incluía solo asignaciones estándar de Wansung y áreas definidas por el usuario, por lo que no incluía algunos caracteres que la página de códigos 933/ 834 incluidos. [11] Algunas versiones posteriores, como la implementada por Componentes Internacionales para Unicode (ICU), reducen la región definida por el usuario para incluir estos caracteres como extensiones. [12]
La revisión anterior de octubre de 1989 de CH 3-3220-125 había definido en cambio la página de códigos 926 como su código DBCS-PC, que codificaba los mismos caracteres que IBM-834 en un diseño diferente de IBM-951 e IBM-834, que tenían un rango de bytes iniciales diferente y no era una extensión EUC-KR. [11] IBM-926 se combinó con la página de códigos 891 o la página de códigos 1040 (respectivamente, código Hangul de N bytes de 8 bits y una extensión del mismo; compare cómo Shift JIS extiende JIS X 0201 de 8 bits ) para formar IBM-934 o IBM. -944 respectivamente. [13] [14]
Las páginas de códigos 944/926 ahora están en desuso en favor de IBM-949. La revisión de 1992 designa la página de códigos 926 como "restringida" ("limitada al entorno particular para el cual [está] registrada") y no proporciona su tabla ni asignaciones de las otras páginas de códigos, [11] y el CCSID 944 está categorizado como "coexistencia y migración" [14] (contraste "interoperable" para CCSID 949). [8] Componentes internacionales para Unicode incluye asignaciones Unicode para IBM-949 [4] [12] e IBM-933, pero su asignación IBM-944 se eliminó en 2001. [15]
IBM-949 está diseñado para admitir un máximo de 1880 UDC (caracteres definidos por el usuario), [8] incluidas las filas definidas por el usuario (bytes iniciales 0xC9 y 0xFE) del plano Wansung y rangos fuera del plano Wansung. En esta versión, los bytes iniciales 0x8F–A0 contienen un máximo de 1692 UDC, y los bytes iniciales 0xC9 y 0xFE contienen un máximo de 94 cada uno (es decir, con los bytes finales 0xA1–FE). [11] Sin embargo, cuando se implementan las extensiones para admitir todo el repertorio de doble byte de IBM-933 , utilizan bytes iniciales 0x9A–A0, lo que da como resultado un número máximo menor de caracteres que quedan para la definición del usuario. [4] [12]
Cuando se asigna a Unicode, 0xC9A1–C9FE (entre los rangos de sílaba y hanja) se asignan a los puntos de código del área de uso privado Unicode U+E000–E05D, mientras que 0xFEA1–FEFE (entre el final del rango de hanja y el final del plano ) están asignados a U+E05E–E0BB. Fuera del plano Wansung, 0x8FA0–9AA5 (donde el segundo byte está en el rango 0xA1–FE) se asignan a los puntos de código de área de uso privado U+E0BC–E4CA. [4] El último de estos rangos corta el inicio de la fila 0x9A (que se muestra a continuación).
En conjunto, estos rangos de uso privado cubren los puntos de código U+E000–E4CA, lo que permite asignar 1227 UDC desde IBM-949 a Unicode. [12] IBM utiliza el rango de área de uso privado separado U+F843–F86E para mapear algunos caracteres dentro del rango extendido de hanja. [12] Esto sigue las primeras recomendaciones del Consorcio Unicode de que los caracteres corporativos se asignen desde U+F8FF hacia abajo y los caracteres definidos por el usuario se asignen desde U+E000 hacia arriba, [18] y es parte de un esquema de área de uso privado corporativo más grande que es definido internamente por IBM y utiliza el rango U+F83D–F8FF. [19] [20]
Según la especificación de 1992, toda esta gama está definida por el usuario. [11] Sin embargo, tal como se implementó en el códec aportado a ICU por IBM, 0x9AA1 a 0x9AA5 son el final del rango definido por el usuario. El resto de este rango incluye algunos caracteres que no son Hangul incluidos en la página de códigos 933 pero no en el código Wansung. 0x9AA6 a 0x9AAB contienen diversos símbolos técnicos o matemáticos. El resto contiene hanja adicionales a los incluidos en KS X 1001 , aunque IBM asigna algunos al Área de uso privado. [12]
Según la especificación de 1992, toda esta gama está definida por el usuario. [11] Tal como se implementó en el códec aportado a ICU por IBM, 0x9EA1 a 0x9EAC contienen el resto del hanja extendido. El resto de la gama contiene algunas sílabas Hangul adicionales que no están disponibles en forma precompuesta en EUC-KR puro . A diferencia del Código Hangul Unificado, esto es insuficiente para admitir todas las sílabas Johab no parciales ausentes en el código Wansung. [12]
Entre ellos se encuentran importantes 뢔 (0x9EFC), 쌰 (0x9FE6), 쎼 (0x9FED), 쓔 (0x9FF3) y 쬬 (0xA0C1), que corresponden al comienzo de los caracteres estándar de Wansung 뢨, 썅, 쏀, 쓩 y 쭁 respectivamente. , cuando se ingresa parcialmente en un editor de métodos de entrada .
coincide con el estándar KS X 1001 y el Código Hangul unificado, más comúnmente conocidos juntos como página de códigos de Windows 949.
IBM ha designado 195 posiciones de U+F83D a U+F8FF para su uso como zona corporativa de IBM y tiene la intención de usarlas consistentemente dentro de IBM siempre que sea necesario mantener la integridad de ida y vuelta de los caracteres de IBM.