Articulo de referencia

Página de códigos 932 (Microsoft Windows)

{{cite web |url=https://docs.rs/encoding_rs/latest/encoding_rs/#notable-differences-from-iana-naming |title=Notable Differences from IANA Naming |work=Crate encoding_rs |publish...

La página de códigos 932 de Microsoft Windows (abreviada como MS932 , [ 2 ] [ 3 ] Windows-932 [ 3 ] o, de forma ambigua, CP932 [ 4 ] ), también llamada Windows-31J, entre otros nombres (véase la sección Terminología más abajo), es la página de códigos de Microsoft Windows para el idioma japonés , que es una variante extendida de la codificación de caracteres japoneses Shift JIS . Contiene códigos ASCII estándar de 7 bits , y los caracteres japoneses se indican mediante el bit más significativo del primer byte, que se establece en 1. Algunos puntos de código en esta página requieren un segundo byte, por lo que los caracteres utilizan 8 o 16 bits para la codificación.

IBM ofrece los mismos códigos extendidos de doble byte en su página de códigos 943 ( IBM-943 o CP943 ), [ 5 ] que es una combinación de la página de códigos de un solo byte 897 y la página de códigos de doble byte 941. [ 6 ]

Windows-31J es la codificación japonesa no UTF-8 /Unicode más utilizada en la web. Sin embargo, muchas personas y paquetes de software, incluidas las bibliotecas de Microsoft, [ 7 ] declaran la codificación Shift JIS para los datos Windows-31J, aunque incluye algunos caracteres adicionales y algunos de los caracteres existentes se asignan a Unicode de manera diferente. Esto ha llevado al estándar HTML WHATWG a tratar las etiquetas de codificación shift_jisde windows-31jforma intercambiable y a utilizar la variante de Windows para su codificador y decodificador "Shift_JIS". [ 1 ]

Terminología

La variante Shift JIS de Microsoft se conoce simplemente como "Página de códigos 932" en Microsoft Windows; sin embargo, esto es ambiguo, ya que la página de códigos 932 de IBM , si bien también es una variante Shift JIS, carece de las extensiones de proveedor de doble byte NEC y NEC-seleccionadas que están presentes en la variante de Microsoft (aunque ambas incluyen las extensiones de IBM) y conserva el orden de 1978 de JIS X 0208. [ 5 ]

La página de códigos 943 de IBM (o "IBM-943") incluye los mismos códigos de doble byte que la página de códigos 932 de Windows. [ 5 ] La versión de Microsoft se corresponde estrechamente con la codificación denominada ibm-943_P15A-2003 (con alias como CP943C y Windows-932 ) [ 3 ] en los Componentes Internacionales para Unicode (ICU). También existe una segunda codificación ICU llamada ibm-943_P130-1999 , [ 8 ] que utiliza asignaciones de un solo byte diferentes que se ajustan mejor a las definiciones de la página de códigos de IBM. (Véase la sección "Diferencias de caracteres de un solo byte" más adelante para obtener más detalles).

La página de códigos 932 de Windows está registrada en la IANA como Windows-31J . [ 9 ] La etiqueta "Windows-31J" pertenece a la IANA y no es reconocida por Microsoft, que históricamente ha utilizado "shift_jis" en su lugar. [ 7 ] El estándar de codificación W3C / WHATWG utilizado por HTML5 trata la etiqueta " shift_jis " indistintamente con "windows-31j" con la intención de ser "compatible con el contenido implementado" [ 10 ] y coincide con la página de códigos 932 de Windows [ 1 ] (incluidas las "extensiones anteriormente propietarias de IBM y NEC"). [ 11 ]

La página de códigos 932 de Windows también se llama MS_Kanji , [ 3 ] [ 12 ] aunque IANA trata MS_Kanji como un alias para Shift JIS estándar. [ 9 ] Python , por ejemplo, usa la etiqueta MS-Kanji(o cp932) para Windows-932 y la etiqueta Shift_JIS(o sjis) para Shift JIS definido por JIS X 0208, sin reconocer la Windows-31Jetiqueta. [ 12 ]

En las versiones japonesas de Windows, esta página de códigos se denomina "ANSI" , ya que es la codificación de 8 bits predeterminada del sistema operativo, aunque ANSI no participó en su definición.

Diferencias con respecto al estándar Shift JIS

Windows-31J se confunde a menudo con el estándar Shift JIS (tal como se define en JIS X 0208 :1997 Apéndice 1): si bien son similares, la distinción es significativa para los programadores informáticos que desean evitar el mojibake .

Diferencias de caracteres de doble byte

Diagrama de Euler que compara los repertorios de JIS X 0208 , JIS X 0212 , JIS X 0213 , Windows-31J, el repertorio estándar de Microsoft y Unicode.

Además de los caracteres estándar JIS X 0201 :1997 y JIS X 0208 :1997, Windows-31J incluye varias extensiones JIS X 0208, a saber, " caracteres especiales NEC (fila 13), selección NEC de extensiones IBM (filas 89 a 92) y extensiones IBM (filas 115 a 119)", [ 9 ] además de reservar cierto espacio de codificación para la definición del usuario final . [ 13 ] Esto también difiere de IBM-932 , que no incluye las extensiones NEC ni la selección NEC. [ 5 ]

Las extensiones de IBM fueron diseñadas para codificar caracteres del repertorio IBM Japanese DBCS-Host que inicialmente no estaban en JIS X 0208; el signo 'porque' ∵ y el signo 'no'¬ se agregaron posteriormente a JIS X 0208 en 1983, y Microsoft los incluye en ubicaciones de extensión así como en sus ubicaciones de 1983. [ 14 ] Las extensiones de NEC también codifican la totalidad del repertorio de IBM, pero en una extensión separada dentro de la cuadrícula JIS X 0208 de 94×94 (en las filas 89–92, además de los caracteres ya incluidos en la fila 13 de NEC ), en lugar de usar códigos Shift JIS más allá del rango de JIS X 0208; la página de códigos 932 de Windows incluye estos 388 caracteres en ambas ubicaciones. [ 14 ] Como resultado, los signos 'porque' y 'no' se codifican tres veces.

Algunas de estas representaciones fueron utilizadas posteriormente para diferentes caracteres por JIS X 0213 y Shift JIS-2004 . Por ejemplo, compárese la fila 89 en JIS X 0213 (que comienza con 硃, 硎, 硏...) [ 15 ] con la fila 89 utilizada por JIS X 0208 con extensiones IBM/NEC (que comienza con 纊, 褜, 鍈...). [ 16 ] En consecuencia, Shift JIS-2004 no es compatible con Windows-31J.

Además de lo anterior, Microsoft utiliza una asignación Unicode diferente (pero visualmente similar) para varios caracteres de puntuación de doble byte en comparación con el estándar Shift JIS, como la raya ondulada que se asigna a U+FF5E en lugar de U+301C, [ 17 ] que va seguida de ibm-943_P15A-2003 [ 18 ] pero no de ibm-943_P130-1999, [ 19 ] y utiliza una asignación diferente para la barra invertida de doble byte. [ 17 ]

Diferencias de caracteres de un solo byte

Windows-932 incluye asignaciones ASCII estándar de 7 bits para secuencias de un solo byte con el bit más significativo establecido en 0. Por lo tanto, los códigos 0x5C y 0x7E se asignan a Unicode como U+005C REVERSE SOLIDUS ( \, la barra invertida ) y U+007E TILDE ( ~) respectivamente, [ 20 ] [ 21 ] [ 17 ] como lo son en ASCII ( ISO-646 -US). Esto también lo hace el estándar de codificación W3C/WHATWG. [ 22 ] Por el contrario, 0x5C se asigna a U+00A5 YEN SIGN ( ¥) en ISO-646-JP y, por consiguiente, a JIS X 0201 , del cual el estándar Shift JIS es una extensión. De forma correspondiente, Windows-31J evita la codificación duplicada de la barra invertida al asignar el doble byte 0x815F a U+FF3C FULLWIDTH REVERSE SOLIDUS, mientras que Shift JIS estándar lo asigna a U+005C. [ 17 ]

Sin embargo, 0x5C en Windows-932 se considera un símbolo de yen en ciertos contextos. [ 23 ] Por esta razón, en muchas fuentes japonesas, U+005C se muestra como un símbolo de yen, que normalmente se representaría como U+00A5, en lugar de como una barra invertida según la representación sugerida por Unicode. U+00A5 es una asignación de mejor ajuste unidireccional a 0x5C en Windows-932. Sin embargo, el código 0x5C en Windows-932 se comporta como una barra invertida en todos los aspectos (por ejemplo, en rutas de archivos en sistemas Windows) excepto como lo muestran algunas fuentes, [ 23 ] y la documentación de Microsoft para Windows-932 muestra 0x5C como una barra invertida. [ 21 ] Este mapeo [ 20 ] corresponde a la codificación denominada "ibm-943_P15A-2003" en Componentes Internacionales para Unicode (ICU), [ 3 ] excepto por una pequeña reordenación de algunos caracteres de control C0 .

IBM-943 , al igual que IBM-932 , [ 5 ] es un superconjunto de la página de códigos de un solo byte 897 , [ 6 ] que asigna 0x5C al símbolo del yen ( ¥) y 0x7E a la línea superior ( ), [ 24 ] esto va seguido de la codificación llamada "ibm-943_P130-1999" en ICU. [ 8 ] La página de códigos 897 (y por lo tanto también IBM-943 e IBM-932) también agrega caracteres de dibujo de caja de un solo byte que reemplazan ciertos caracteres de control C0 , [ 24 ] sin embargo, estos aún pueden ser tratados como caracteres de control dependiendo del contexto, [ 25 ] y se asignan a caracteres de control en ICU. [ 8 ]

Disposición

Véase también

Referencias

  1. 1 2 3 Fundación Mozilla . "Diferencias notables con la nomenclatura de IANA" . Crate encoding_rs . docs.rs.
  2. Sivonen, Henri. "Bug 27851 - Agregar MS932 como etiqueta de Shift_JIS" . w3.org Bug Tracker .
  3. 1 2 3 4 5 "Explorador de convertidores: ibm-943_P15A-2003 (alias windows-31j)" . Componentes internacionales para Unicode: demostración de ICU .
  4. Aoki, Osamu. "Capítulo 11. Conversión de datos" . Referencia de Debian . Debian.
  5. 1 2 3 4 5 "IBM-943 e IBM-932" . Centro de conocimiento de IBM . IBM.
  6. 1 2 "Identificadores de conjuntos de caracteres codificados - CCSID 943" . Globalización de IBM . IBM. Archivado del original el 15 de marzo de 2016.
  7. 1 2 "Propiedad Encoding.WindowsCodePage - .NET Framework (versión actual)" . MSDN . Microsoft.
  8. 1 2 3 "Converter Explorer: ibm-943_P130-1999" . Componentes internacionales para Unicode: demostración de ICU .
  9. 1 2 3 "Conjuntos de caracteres" . IANA.
  10. van Kesteren, Ana . «4.2. Nombres y etiquetas» . Estándar de codificación . QUÉ.
  11. van Kesteren, Ana . "5. Índices (§ Índice jis0208)" . Estándar de codificación . QUÉ.
  12. 1 2 "7.2.3. Codificaciones estándar" . Documentación de Python 3.6 . Python Software Foundation . Consultado el 19 de septiembre de 2017 .
  13. Kaplan, Michael S (26-05-2007). "El PUA fuera de Unicode" . Resolviéndolo todo .
  14. 1 2 Lunde, Ken (2009). "Apéndice E: Estándares de conjuntos de caracteres del proveedor" (PDF) . Procesamiento de información CJKV: Informática en chino, japonés, coreano y vietnamita (2.ª ed.). Sebastopol, CA : O'Reilly . ISBN  978-0-596-51447-1.
  15. Comité de Normas Industriales Japonesas (13 de abril de 2004). Conjunto de caracteres gráficos japoneses para el intercambio de información, plano 1 (PDF) . ITSCJ/ IPSJ . ISO-IR -233.
  16. van Kesteren, Ana . "Visualización del índice jis0208" . Estándar de codificación . QUÉ.
  17. 1 2 3 4 "Ambigüedades en la conversión de Shift-JIS a Unicode (no normativo)" . Perfil japonés XML . W3C.
  18. "Explorador de convertidores: ibm-943_P15A-2003: byte de inicio 0x81" . Demostración de ICU . Componentes internacionales para Unicode.
  19. "Explorador de convertidores: ibm-943_P130-1999: byte de inicio 0x81" . Demostración de ICU . Componentes internacionales para Unicode.
  20. 1 2 "CP932.TXT" . Consorcio Unicode.
  21. 1 2 "Byte inicial NULL — Página de código 932" . Microsoft.
  22. van Kesteren, Anne . "12.3.1. Decodificador Shift_JIS" . Estándar de codificación . WHATWG. Si byte es un byte ASCII o 0x80, devuelve un punto de código cuyo valor es byte.
  23. 1 2 Kaplan, Michael S. (17 de septiembre de 2005). "¿Cuándo una barra invertida no es una barra invertida?" . Aclarándolo todo .
  24. 1 2 "CP00897.txt" . IBM.
  25. "Identificadores de página de códigos - CP 00897" . Globalización de IBM . IBM. Archivado del original el 17 de marzo de 2016.
  • Referencia de Microsoft para Windows, página de código 932
  • Archivo de página de códigos para MS932
  • Mapeo de la página de códigos 932 de Microsoft a Unicode
  • Demostración de la página de códigos de la UCI 943C (ibm-943_P15A-2003 alias windows-31j)
  • Documentación de IBM de la página de códigos 943
  • Demostración de la página 943 del código de la UCI (ibm-943_P130-1999)
  • Mapeo de la UCI para ibm-943_P130-1999 a Unicode