Pregunta

Tengo un archivo que está codificado en ANSI.Sin embargo, se muestra letras árabes en su interior.este archivo de texto generado por algún programa (no tengo la info), pero parece que hay algún tipo de codificación interno (si yo podría decir y si es posible) para las letras árabes para hacer aparecer.

¿Existe tal cosa?Si no, ¿cómo puede el ANSI archivo de mostrar las letras árabes?

*Si es posible explicar en código Java


Edición 01

Cuando he abierto en el Bloc de notas++ muestra que la codificación ANSI.Por favor revise esta foto:

http://www.4shared.com/file/221862075/e8705951/text-Windows.html


Edición 02

puede consultar el archivo a partir de:

http://www.4shared.com/file/221853641/3fa1af8c/data.html

¿Fue útil?

Solución

He intentado abrir el archivo en Firefox y Opera. Tenía que establecer la codificación de caracteres de Windows árabe-1256 para conseguir que se muestra correctamente en ambos navegadores, por lo que la codificación del archivo es más probable que sea eso.

NOTA: Originalmente publicado esto como un comentario, pero pidieron para que sea una respuesta.

Otros consejos

¿Cómo sabe que está codificado ANSI? Si no es una codificación multi-byte como UTF-8, Mi conjetura sería que está codificada utilizando una página de códigos árabe como éste: Windows 1256 .

Se podría buscar en el archivo en un editor hexadecimal y averiguar qué números de los caracteres árabes tienen y de esa manera tratar de averiguar qué codificación de la página / código que fue creado con.

Respuesta corta:Probablemente, el archivo de texto no es "ANSI"-codificado, pero utf-8.

Respuesta larga:

En primer lugar, el término "ANSI" (en Windows) no significa una codificación fija;su significado depende de la configuración de idioma.Por ejemplo, en Europa Occidental y estados UNIDOS, por lo general se Windows-1252 (una variante de ISO/IEC 8859-1, también conocido como latin-1), en Japón, es SHift JIS, y en los países árabes, es ISO/IEC_8859-6.

Si estamos usando una versión en árabe de Windows y la oscilación vertical no cambia la configuración de idioma, y usted puede ver las letras árabes en el archivo cuando se abre en el Bloc de notas, entonces ciertamente no en cualquiera de estos ANSI codificaciones.En su lugar, es probablemente Unicode.

Tenga en cuenta que no me refiero a "UNICODE", que en Windows normalmente significa UTF-16LE.Podría ser UTF-8 así.Ambos son codificaciones que puede codificar todas 100.000+ caracteres definidos actualmente en Unicode, pero lo hacen de diferentes maneras.Ambos son la longitud de la variable codificaciones, lo que significa que no todos los caracteres se codifican utilizando el mismo número de bits.

En UTF-8, cada carácter se codifica como de uno a cuatro bytes.La codificación ha sido elegido tal que los caracteres ASCII están codificados en un byte.

En UTF-16, cada carácter se codifica como dos de cuatro bytes.Esta codificación ha sido originalmente inventado cuando Unicode tenía menos de 64 caracteres, y por lo tanto, podría codificar cada carácter en una sola palabra de 16 bits.Más tarde, cuando se hizo evidente que Unicode tendría que crecer más allá del límite de 64 kb, un esquema fue inventado en donde los pares de palabras en el rango 0xD800-0xDFFF se utilizan para representar caracteres fuera de los primeros 64 kb (menos 0x800) caracteres.

Para ver lo que realmente está en el archivo, abrirlo en un editor hexadecimal:

  • Si los dos primeros bytes son FF FE, entonces es probable UTF-16LE (little endian)
  • Si los dos primeros bytes son FF FE, entonces es probable UTF-16BE (big endian, raro en Windows)
  • Si los tres primeros bytes son EF BB BF, entonces es probable UTF-8
  • Si usted ve un montón de 00 Bytes, es probable UTF-16 (o UTF-32, si ves pares de 00 BYtes)
  • Si los caracteres árabes ocupan un único Byte, es probable ISO-8859-6 (por ejemplo,ش sería D5).
  • Si los caracteres arábigos ocupar varios Bytes, es probable UTF-8 (por ejemplo,ش sería D8 B4).
  

¿Existe tal cosa?

No.

  

Si no es así, ¿cómo puede el archivo ANSI mostrar las letras árabes?

No es un archivo codificado de Windows-ANSI. Lo más probable es que utiliza un de anchura variable de codificación , lo más probable UTF-8: muchas posiciones de caracteres común en UTF-8 son equivalentes a sus posiciones en US-ASCII (de hecho, fue diseñado de esa manera), y por inferencia también para Windows-ANSI.

Editar : Tenemos que agradecer a Microsoft de esta confusión. “ANSI” no está bien especificado cuando se trata de codificaciones. Por lo general, se supone que debe presentarse a la codificación predeterminada de Windows con la página de códigos 1252 ( “Windows-1252”), que pasa a corresponder a los alfabetos “occidentales” deriva del latín.

Sin embargo, en otros países el utilizado por defecto de Windows (en las versiones anteriores de Windows ... hoy, el valor predeterminado es UTF-8) es no Windows-1252, sino más bien una codificación diferente, que luego se también llamado “ANSI”. En este caso, la página de códigos 1256.

ANSI permite la codificación de caracteres para 217 caracteres y no contiene letras árabes. Creo que tal vez el archivo utiliza una codificación alternativa.

Anwsering tu edición, parece que el problema es con Notepad ++, ya que lo que se muestra es claramente más allá de las capacidades del juego de caracteres ANSI.

primero he descargado el archivo y trató de usar vim para comprobar su codificación y que no parecía saber y en una segunda máquina que dijo latin1 que podría ser similar a lo que ocurrió en Notepad ++ (dio la respuesta genérica). < br> Así que lo hice file data.txt y la salida era la siguiente:

data.txt: ISO-8859 text, with CRLF line terminators

Espero que esto ayude.

Editar :
el uso de la cosa navegador mostró que esta respuesta es incorrecta.

ISO-8859-4 e ISO-8859-13 podrían mostrar el texto, sin errores, pero los personajes en los que no en árabe.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top