stringtranslate.com

Cambiar JIS

Shift JIS ( Shift Japanese Industrial Standards , 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 estandarizado como JIS X 0208 Apéndice 1 .

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

En febrero de 2024 , el 0,3% de las páginas web encuestadas utilizaban Shift JIS (en realidad decodificado como su codificación superconjunto Windows-31J ), una disminución con respecto al 1,3% en julio de 2014. [4] Shift JIS es la segunda codificación de caracteres más declarada para japonés sitios web, utilizados por el 5,3% de los sitios en el dominio .jp. UTF-8 es utilizado por el 94,7% 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 juego 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 0xA1 a 0xDF .

Los caracteres de un solo byte 0x 00 a 0x7F coinciden con la codificación ASCII , excepto por un signo yen (U+00A5) en 0x5C y una línea superpuesta (U+203E) en 0x7E en lugar de la barra invertida y la tilde del juego de caracteres ASCII respectivamente (estas desviaciones de ASCII alineado 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 .

Para caracteres de doble byte, el primer byte siempre está 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 tendrá un conjunto de bits alto (0x80–0xFF); el valor del segundo byte puede ser alto o bajo. La aparición de valores de bytes 0x40–0x7E como segundos bytes de palabras de código dificulta la detección confiable de Shift JIS, porque se usan los mismos códigos para los 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 JIS X 0208 de doble byte , [c] la transformación a los bytes Shift JIS correspondientes es:

El formato de 8 bits de la competencia, EUC-JP , que no admite katakana de ancho medio 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 con conjuntos de bits altos son parte de un código doble. Carácter de 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 charset está en la parte superior del documento, ya que el importante inicio y final de las etiquetas y campos HTML ( <, >, /, ", &, ;) están codificados con 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, el carácter de escape 0x5C, normalmente barra invertida , es el signo yen de ancho medio (¥) en Shift JIS. Si el programador es consciente de esto, sería posible usarlo (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");

Múltiples 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 codificaciones relacionadas, incluidas las intersecciones y otros subconjuntos. Los nombres dados 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 en Shift JIS, por lo tanto, hay espacio para más caracteres aquí; en realidad, estas son extensiones de JIS X 0208 en lugar de Shift JIS en sí.

En segundo lugar, Shift JIS tiene más espacio de codificación del necesario para JIS X 0201 y JIS X 0208 (consulte § Mapa de bytes de Shift JIS a continuación), y este espacio puede usarse y se usa para aún más caracteres (ya sea de un solo byte o de doble byte). caracteres).

Windows-932/Windows-31J

La extensión más popular es la página de códigos de Windows 932 (un CCSID que también se utiliza para la extensión de IBM para Shift JIS ), que está registrada en la IANA como "Windows-31J", [1] por separado de Shift JIS. Esto fue popularizado por Microsoft, aunque la propia 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 (excluidas las que Microsoft incorpora de NEC) y conserva el orden de los 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 signo 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 reservando algo de espacio de codificación para la definición del usuario final . [13]

La página de códigos de Windows 932 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" indistintamente con "windows-31j" con la intención de ser "compatible con el contenido implementado". [15]

MacJaponés

La versión de Shift-JIS que se origina en el Mac OS clásico (conocida como x-mac-japanesepágina de códigos 10001 [7] o MacJapanese) asignó la tilde a 0x7E (siguiendo a US-ASCII , no JIS X 0201 que asigna la línea superpuesta aquí), pero el yen. firme en 0x5C (como en JIS X 0201 y el estándar Shift JIS ). También amplió JIS X 0201 asignando la barra invertida a 0x80 (correspondiente a 0x5C en US-ASCII), el espacio sin separación a 0xA0, el signo de copyright a 0xFD, el símbolo de marca registrada a 0xFE y los puntos suspensivos horizontales de medio ancho a 0xFF. . También agregó caracteres extendidos de doble byte; incluidos 53 formularios de presentación vertical 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, ciertos tipos de letra de Mac OS utilizaban otras variantes. Sai Mincho y Chu Gothic utilizan una variante " PostScript " de MacJapanese, que incluía formas de presentación vertical adicionales y un conjunto diferente de caracteres especiales extendidos, basados ​​en los caracteres especiales NEC , algunos de los cuales sólo estaban disponibles en las versiones impresas de las fuentes. [16] Las versiones anteriores de Maru Gothic y Hon Mincho del Sistema 7.1 codificaban formas de presentación vertical 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 colocó los formularios de presentación vertical 10 filas hacia abajo y también usó el diseño de extensión NEC para la fila 13. [19]

Shift_JISx0213 y Shift_JIS-2004

El estándar JIS X 0213 más nuevo define una variante extendida de Shift_JIS denominada Shift_JISx0213 (en una versión anterior del estándar) o Shift_JIS-2004 . Es un superconjunto de Shift JIS estándar. [20]

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

En lo anterior, es una secuencia Shift_JIS-2004 de dos bytes, es el número del plano (, men , superficie) (1 o 2), es el número de fila (, ku , ward) (1-94) y es el número de celda (, diez , punto) (1-94). Los números ku y diez 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 chocan con las extensiones populares Shift JIS, incluida la página de códigos 932 de Windows que se utiliza en los estándares web (ver arriba). Por ejemplo, compare el plano 1, fila 89 en JIS X 0213 (comenzando con 硃, 硎, 硏...) [22] con la fila 89 en la variante JIS X 0208 definida en los estándares web (comenzando con 纊, 褜, 鍈...) . [23] Además, algunos de los caracteres se asignan a caracteres Unicode más allá del BMP.

Otras variantes

Los operadores de telefonía móvil japoneses utilizan el espacio con bytes iniciales 0xF5 a 0xF9 (más allá de la región utilizada para JIS X 0208) para las pictografías que se utilizan en el correo electrónico . [24] KDDI va más allá y define cientos más en el espacio con bytes iniciales 0xF3 y 0xF4. [25]

Más allá de esto, se han realizado numerosas variaciones menores en Shift JIS, con caracteres individuales alterados aquí y allá. La mayoría de estas extensiones y variantes no tienen registro de la IANA , por lo que hay mucho margen de 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 manera de manejar esto es un editor especial que codifica Shift JIS de esta manera.

Desplazar mapa de bytes JIS

Como se define en JIS X 0208:1997

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

Con extensiones de 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 se utilizan en determinadas extensiones, lo que da como resultado el diseño que se detalla en el cuadro siguiente.


Ver también

Notas a pie de página

  1. ^ No en el sentido más estricto del término, ya que los bytes ASCII pueden aparecer como bytes de seguimiento.
  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 los caracteres de control (0–31 (0x1f) y 127 (0x7f)) y el espacio).

Referencias

  1. ^ abc "Conjuntos de caracteres". IANA.
  2. ^ ab "convutf8.c". AbiertoSolaris . Línea 305. 2008-11-12.
  3. ^ ab "Módulos iconv japoneses adicionales". Novedades del entorno operativo Solaris 9 9/04 . Corporación Oráculo .
  4. ^ "Tendencias históricas en el uso de codificaciones de caracteres para sitios web, enero de 2024". w3techs.com . Consultado el 2 de febrero de 2024 .
  5. ^ "Distribución de codificaciones de caracteres entre sitios web que utilizan .jp". w3techs.com . Consultado el 1 de enero de 2024 .
  6. ^ "Distribución de codificaciones de caracteres entre sitios web que utilizan japonés". w3techs.com . Consultado el 1 de enero de 2024 .
  7. ^ ab "Propiedad Encoding.WindowsCodePage - .NET Framework (versión actual)". MSDN . Microsoft.
  8. ^ "Identificadores de página 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 Unicode y caracteres definidos por el usuario/proveedor . El Grupo Abierto Japón. 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". Ordenándolo todo .
  14. ^ "5. Índices (§ Índice jis0208)". Estándar de codificación . QUÉ.
  15. ^ "4.2. Nombres y etiquetas". Estándar de codificación . QUÉ.
  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 época en Japón". Blog tipo CJK . Adobe Inc.
  18. ^ "Variantes de codificación para MacJapanese". Documentación para desarrolladores de Apple . Manzana.
  19. ^ Lunde, Ken (2008). "Apéndice E: Estándares de juego de caracteres del proveedor" (PDF) . Procesamiento de Información CJKV . Medios O'Reilly . ISBN 9780596514471.
  20. ^ "Tablas de asignación de códigos 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é Japonés de Normas Industriales (13 de abril de 2004). Conjunto de caracteres gráficos japoneses para intercambio de información, plano 1 (PDF) . ITSCJ/ IPSJ . ISO-IR -233.
  23. ^ "Visualización del índice jis0208". Estándar de codificación . QUÉ.
  24. ^ "Emoji original de DoCoMo". Formato de archivo.info.
  25. ^ "Emoji original de KDDI". Formato de archivo.info.

enlaces externos