stringtranslate.com

Cambiar JIS

Shift JIS (también SJIS , nombre MIME Shift_JIS , conocido como PCK en contextos Solaris ) [2] [3] es una codificación de caracteres para el idioma japonés , desarrollada originalmente por la empresa japonesa ASCII Corporation [b] en conjunto con Microsoft y estandarizada como JIS X 0208 Apéndice 1 .

Shift JIS se basa en conjuntos de caracteres definidos en los estándares JIS X 0201 :1997 (para caracteres de un solo byte ) y JIS X 0208 :1997 (para caracteres de doble byte ).

En septiembre de 2024 , el 0,3 % de las páginas web encuestadas utilizaban Shift JIS (en realidad decodificado como su superconjunto de codificación Windows-31J ), una disminución respecto del 1,3 % en julio de 2014. [4] Shift JIS es la segunda codificación de caracteres más declarada para sitios web japoneses, utilizada por el 4,9 % de los sitios en el dominio .jp, mientras que UTF-8 es utilizada por el 95,1 % de los sitios web japoneses. [5] [6]

Estructura

Shift JIS es una extensión de la codificación de un solo byte JIS X 0201 :1997 , que utiliza puntos de código no asignados en JIS X 0201 para codificar el conjunto de caracteres de doble byte JIS X 0208 :1997 . Los bytes iniciales de los caracteres de doble byte se "desplazan" alrededor de los 64 caracteres katakana de ancho medio en el rango de un solo byte de 0xA1 a 0xDF .

Los caracteres de un solo byte 0x 00 a 0x7F coinciden con la codificación ASCII , excepto por un signo de yen (U+00A5) en 0x5C y una raya superior (U+203E) en 0x7E en lugar de la barra invertida y la tilde del conjunto de caracteres ASCII respectivamente (estas desviaciones de ASCII se alinean con JIS X 0201 ). Los caracteres de un solo byte de 0xA1 a 0xDF se asignan a los caracteres katakana de ancho medio que se encuentran en JIS X 0201 .

En el caso de caracteres de dos bytes, el primer byte siempre se encuentra en el rango de 0x81 a 0x9F o en el rango de 0xE0 a 0xEF (estos rangos no están asignados en JIS X 0201 ). Si el primer byte es impar, el segundo byte debe estar en el rango de 0x40 a 0x9E (pero no puede ser 0x7F); si el primer byte es par, el segundo byte debe estar en el rango de 0x9F a 0xFC.

Shift JIS solo garantiza que el primer byte de caracteres de dos bytes será el bit alto establecido (0x80–0xFF); el valor del segundo byte puede ser alto o bajo. La aparición de valores de byte 0x40–0x7E como segundos bytes de palabras de código dificulta la detección confiable de Shift JIS, porque se utilizan los mismos códigos para caracteres ASCII. Dado que el mismo valor de byte puede ser el primer o el segundo byte, las búsquedas de cadenas son difíciles, ya que las búsquedas simples pueden coincidir con el segundo byte de un carácter y el primer byte del siguiente, que no es un carácter Shift JIS válido. Los algoritmos de búsqueda de cadenas deben estar hechos a medida para Shift JIS .

Compatibilidad

Shift JIS es totalmente compatible con la codificación de un solo byte JIS X 0201 , lo que significa que cualquier cadena JIS X 0201 válida también es una cadena Shift JIS válida.

Los caracteres de doble byte en JIS X 0208 deben transformarse para poder codificarse en Shift JIS. Para una secuencia de doble byte JIS X 0208 , [c] la transformación a los bytes Shift JIS correspondientes es:

El formato competidor de 8 bits EUC-JP , que no admite katakana de medio ancho de un solo byte, permite una conversión más limpia y directa hacia y desde puntos de código JIS X 0208 , ya que todos los bytes de conjunto de bits altos son partes de un carácter de doble byte y todos los códigos del rango ASCII representan caracteres de un solo byte.

Uso

El HTML escrito en Shift JIS aún se puede interpretar hasta cierto punto cuando se etiqueta incorrectamente como ASCII y cuando la etiqueta de conjunto de caracteres está en la parte superior del documento mismo, ya que el inicio y el final importantes de las etiquetas y campos HTML ( <, >, /, ", &, ;) se codifican como los mismos bytes que en ASCII, y esos bytes no aparecen en secuencias de dos bytes.

Shift JIS se puede utilizar en literales de cadena en lenguajes de programación como C , pero se deben tener en cuenta algunas cosas. En primer lugar, que el carácter de escape 0x5C, normalmente barra invertida , es el signo del yen de ancho medio (¥) en Shift JIS. Si el programador es consciente de esto, sería posible utilizar (donde ハローワールド es Hola, mundo y ¥n es una secuencia de escape), suponiendo que el sistema de E/S admita la salida Shift JIS . En segundo lugar, el byte 0x5C causará problemas cuando aparezca como segundo byte de un carácter de dos bytes, porque se interpretará como una secuencia de escape, lo que arruinará la interpretación, a menos que vaya seguido de otro 0x5C.printf("ハローワールド¥n");

Varias versiones

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
Relación entre las variantes de Shift_JIS en la PC y las codificaciones relacionadas, incluidas las intersecciones y otros subconjuntos. Los nombres que se dan son descriptivos.

Existen muchas versiones diferentes de Shift JIS. Hay dos áreas de expansión:

En primer lugar, JIS X 0208 no llena todo el espacio de 94×94 codificado para él en Shift JIS, por lo tanto, aquí hay lugar para más caracteres (en realidad, se trata de extensiones de JIS X 0208, más que de Shift JIS en sí).

En segundo lugar, Shift JIS tiene más espacio de codificación del que se necesita para JIS X 0201 y JIS X 0208 (véase el § Mapa de bytes de Shift JIS a continuación), y este espacio se puede utilizar y se utiliza para aún más caracteres (ya sea como caracteres de un solo byte o de doble byte).

Windows-932 / Windows-31J

La extensión más popular es la página de códigos 932 de Windows (un CCSID también utilizado para la extensión de IBM a Shift JIS ), que está registrada en la IANA como "Windows-31J", [1] por separado de Shift JIS. Esta fue popularizada por Microsoft, aunque Microsoft no reconoce el nombre Windows-31J y en su lugar llama a esa variación "shift_jis". [7] [8] La página de códigos 943 de IBM incluye los mismos códigos de doble byte que la página de códigos 932 de Microsoft, mientras que la página de códigos 932 de IBM incluye menos extensiones (excluyendo aquellas que Microsoft incorpora de NEC), y conserva el orden de caracteres de la edición de 1978 de JIS X 0208, en lugar de implementar los cambios de variantes de caracteres del estándar de 1983. [9]

Windows-31J asigna 0x5C a U+005C REVERSE SOLIDUS (la barra invertida ), y 0x7E a U+007E TILDE , siguiendo US-ASCII . [10] Sin embargo, la mayoría de las fuentes localizadas en Windows muestran U+005C como un signo de Yen para compatibilidad con JIS X 0201. [11] [12] Incluye varias extensiones, a saber, " Caracteres especiales NEC (Fila 13), selección NEC de extensiones IBM (Filas 89 a 92) y extensiones IBM (Filas 115 a 119)", [1] además de reservar algo de espacio de codificación para la definición del usuario final . [13]

La página de códigos 932 de Windows es la versión utilizada en el estándar de codificación W3C / WHATWG utilizado por HTML5 , que incluye las "extensiones anteriormente propietarias de IBM y NEC" de Windows-31J en su tabla para JIS X 0208, [14] y también trata la etiqueta "shift_jis" de manera intercambiable con "windows-31j" con la intención de que sea "compatible con el contenido implementado". [15]

MacJaponés

La versión de Shift-JIS que se originó a partir del Mac OS clásico (conocida como x-mac-japanese, Página de códigos 10001 [7] o MacJapanese) asignó la tilde a 0x7E (siguiendo US-ASCII , no JIS X 0201 que asigna la raya superior aquí), pero el signo del yen a 0x5C (como en JIS X 0201 y Shift JIS estándar ). También extendió JIS X 0201 asignando la barra invertida a 0x80 (correspondiente a 0x5C en US-ASCII), el espacio indivisible a 0xA0, el signo de copyright a 0xFD, el símbolo de marca registrada a 0xFE y los puntos suspensivos horizontales de ancho medio a 0xFF. También agregó caracteres extendidos de doble byte; incluidas 53 formas de presentación verticales en el rango Shift_JIS 0xEB41–0xED96, en 84 filas JIS por debajo de sus formas canónicas, y 260 caracteres especiales en el rango Shift_JIS 0x8540–0x886D. [16] Esta variante se introdujo en la versión 7 de KanjiTalk. [17]

Sin embargo, ciertas tipografías de Mac OS usaban otras variantes. Sai Mincho y Chu Gothic usan una variante " PostScript " de MacJapanese, que incluía formas de presentación verticales adicionales y un conjunto diferente de caracteres especiales extendidos, basados ​​en los caracteres especiales NEC , algunos de los cuales solo estaban disponibles en las versiones para impresora de las fuentes. [16] Las versiones anteriores de Maru Gothic y Hon Mincho del Sistema 7.1 codificaban las formas de presentación verticales en 10 (no 84) filas JIS por debajo de sus formas canónicas, y no incluían las extensiones de caracteres especiales; esto se cambió posteriormente. [16] [18] La variante típica utilizada con KanjiTalk versión 6 colocaba las formas de presentación verticales 10 filas más abajo, y también usaba el diseño de extensión NEC para la fila 13. [19]

Shift_JISx0213 y Shift_JIS-2004

La nueva norma JIS X 0213 define una variante extendida de Shift_JIS denominada Shift_JISx0213 (en una versión anterior de la norma) o Shift_JIS-2004 . Se trata de un superconjunto de la norma Shift JIS. [20]

Para representar las filas asignadas en ambos planos de JIS X 0213, Shift_JIS-2004 utiliza el siguiente método de mapeo de puntos de código. [21]

En lo anterior, es una secuencia Shift_JIS-2004 de dos bytes, es el número de plano (, men , superficie) (1 o 2), es el número de fila (, ku , barrio) (1-94) y es el número de celda (, ten , punto) (1-94). Los números ku y ten son equivalentes a y respectivamente, donde es una secuencia JIS de dos bytes que hace referencia a un plano determinado.

El mismo conjunto de caracteres puede representarse mediante EUC-JIS-2004 , la contraparte basada en EUC-JP.

Algunas de las adiciones entran en conflicto con las extensiones Shift JIS más populares, incluida la página de códigos 932 de Windows que se utiliza en los estándares web (véase más arriba). Por ejemplo, compare la fila 89 del plano 1 en JIS X 0213 (que comienza con 硃, 硎, 硏...) [22] con la fila 89 en la variante JIS X 0208 definida en los estándares web (que comienza con 纊, 褜, 鍈...). [23] Además, algunos de los caracteres se asignan a caracteres Unicode más allá del BMP.

Otras variantes

El espacio con los bytes iniciales 0xF5 a 0xF9 (más allá de la región utilizada para JIS X 0208) es utilizado por los operadores de telefonía móvil japoneses para pictogramas destinados a su uso en correos electrónicos . [24] KDDI va más allá y define cientos más en el espacio con los bytes iniciales 0xF3 y 0xF4. [25]

Además de esto, se han realizado numerosas variaciones menores en Shift JIS, con caracteres individuales modificados aquí y allá. La mayoría de estas extensiones y variantes no tienen registro de la IANA , por lo que hay mucho margen para la confusión, si se utilizan las extensiones.

Una variante es la que se debe utilizar si se desea codificar Shift JIS en cadenas de código fuente de C y lenguajes de programación similares. Esta variante duplica el byte 0x5C si aparece como segundo byte de un carácter de dos bytes, pero no si aparece como un solo carácter "¥" (ASCII: "\"), porque 0x5C es el comienzo de una secuencia de escape . La mejor forma de manejar esto es un editor especial que codifique Shift JIS de esta manera.

Cambiar el mapa de bytes JIS

Según se define en JIS X 0208:1997

La siguiente tabla muestra el significado detallado de cada byte en una secuencia codificada en el estándar Shift JIS (conforme a JIS X 0208:1997 ).

Con extensiones del proveedor o JIS X 0213

Algunos de los bytes que no se utilizan para códigos de un solo byte o bytes iniciales en JIS X 0208:1997 son utilizados por ciertas extensiones, lo que da como resultado el diseño detallado en el cuadro a continuación.


Véase también

Notas al pie

  1. ^ No en el sentido más estricto del término, ya que los bytes ASCII pueden aparecer como bytes finales.
  2. ^ La Corporación ASCII no debe confundirse con la codificación ASCII utilizada en otras partes de este artículo.
  3. ^ En JIS X 0208, j 1 y j 2 están cada uno en el rango de 33 (0x21) a 126 (0x7e) inclusive (es decir, valores de caracteres de 7 bits excluyendo caracteres de control (0–31 (0x1f) y 127 (0x7f)) y espacio).

Referencias

  1. ^ abc "Conjuntos de caracteres". IANA.
  2. ^ ab "convutf8.c". OpenSolaris . Línea 305. 12 de noviembre de 2008.
  3. ^ ab "Módulos iconv adicionales en japonés". Novedades del entorno operativo Solaris 9 9/04 . Oracle Corporation .
  4. ^ "Tendencias históricas en el uso de codificaciones de caracteres para sitios web, mayo de 2024". w3techs.com . Consultado el 22 de mayo de 2024 .
  5. ^ "Distribución de codificaciones de caracteres entre sitios web que utilizan .jp". w3techs.com . Consultado el 3 de septiembre de 2024 .
  6. ^ "Distribución de codificaciones de caracteres entre sitios web que utilizan japonés". w3techs.com . Consultado el 3 de septiembre de 2024 .
  7. ^ ab "Propiedad Encoding.WindowsCodePage – .NET Framework (versión actual)". MSDN . Microsoft.
  8. ^ "Identificadores de páginas de códigos". Centro de desarrollo de Windows . Microsoft. 7 de enero de 2021.
  9. ^ "IBM-943 e IBM-932". Centro de conocimiento de IBM . IBM.
  10. ^ "CP932.TXT". Consorcio Unicode.
  11. ^ "3.1.1 Detalles de los problemas". Problemas y soluciones para caracteres Unicode y definidos por el usuario o el proveedor . The Open Group Japan. Archivado desde el original el 3 de febrero de 1999.
  12. ^ Kaplan, Michael S. (17 de septiembre de 2005). "¿Cuándo una barra invertida no es una barra invertida?".
  13. ^ Kaplan, Michael S (26 de mayo de 2007). "La PUA fuera de Unicode". Poniéndolo todo en orden .
  14. ^ "5. Índices (§ Index jis0208)". Estándar de codificación . WHATWG.
  15. ^ "4.2. Nombres y etiquetas". Estándar de codificación . WHATWG.
  16. ^ abc "JAPANESE.TXT: Mapa (versión externa) de la codificación japonesa de Mac OS a Unicode 2.1 y posteriores". Apple Computer, Inc.; Consorcio Unicode.
  17. ^ Lunde, Ken (21 de marzo de 2019). "Una breve historia de las ligaduras de nombres de eras en Japón". Blog de tipos CJK . Adobe Inc.
  18. ^ "Variantes de codificación para MacJapanese". Documentación para desarrolladores de Apple . Apple.
  19. ^ Lunde, Ken (2008). "Apéndice E: Estándares de conjuntos de caracteres de proveedores" (PDF) . Procesamiento de información CJKV . O'Reilly Media . ISBN 9780596514471.
  20. ^ "Tablas de mapeo de código JIS X 0213". x0213.org.
  21. ^ "JIS X 0213 の代表的な符号化方式 § Shift_JIS-2004" (en japonés).Los números hexadecimales en la fuente se han convertido a decimales para su visualización.
  22. ^ 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.
  23. ^ "Visualización del índice jis0208". Estándar de codificación . WHATWG.
  24. ^ "Emoji original de DoCoMo". FileFormat.info.
  25. ^ "Emoji original de KDDI". FileFormat.info.

Enlaces externos