Respuesta corta: Probablemente, su archivo de texto no está codificado en "ANSI", pero utf-8.
Respuesta larga:
En primer lugar, el término "ANSI" (en Windows) no significa una codificación fija; su significado depende de su configuración de idioma. Por ejemplo, en Europa occidental y EE. UU., Por lo general será Windows-1252 (una variante de ISO/IEC 8859-1, also known as latin-1), en Japón, es SHift JIS, y en los países árabes, es ISO/IEC_8859-6.
Si está utilizando una versión no árabe de Windows y no ha cambiado su configuración de idioma, y puede ver letras en árabe en el archivo cuando lo abre en el Bloc de notas, entonces ciertamente no está en ninguna de estas codificaciones ANSI . En cambio, probablemente sea Unicode.
Tenga en cuenta que no me refiero a "UNICODE", que en Windows generalmente significa UTF-16LE. Podría ser UTF-8 también. Ambas son codificaciones que pueden codificar todos los más de 100.000 caracteres definidos actualmente en Unicode, pero lo hacen de diferentes maneras. Ambos son variable length encodings, lo que significa que no todos los caracteres están codificados con la misma cantidad de bits.
En UTF-8, cada carácter está codificado de uno a cuatro bytes. La codificación se ha elegido de modo que los caracteres ASCII estén codificados en un byte.
En UTF-16, cada carácter se codifica como dos cuatro bytes. Esta codificación se inventó originalmente cuando Unicode tenía menos de 64K caracteres y, por lo tanto, uno podía codificar cada carácter en una sola palabra de 16 bits.Más tarde, cuando quedó claro que Unicode tendría que crecer más allá del límite de 64 KB, se inventó un esquema donde los pares de palabras en el rango 0xD800-0xDFFF se usan para representar caracteres fuera de los primeros 64K (menos 0x800) caracteres.
para ver lo que en realidad 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 el primeros dos bytes son FE FF, entonces es probable UTF-16BE (big endian, poco probable en Windows)
- Si los tres primeros bytes son EF BB BF, entonces es probable UTF-8
- Si ves un montón de 00 Bytes, es probable UTF-16 (o UTF-32, si ve pares de 00 BYtes)
- Si los caracteres árabes ocupan un solo byte, es probable ISO-8859-6 (p. ش sería D5).
- Si los caracteres árabes ocupan múltiples Bytes, es probable que UTF-8 (por ejemplo, ش sería D8 B4).
¿tiene acceso a Linux? si es así, ¿qué dice el comando 'file'? –
No, no tengo acceso a Linux ... si lo hace y me gustaría ayudarlo, descargue mi archivo del enlace que proporcioné en la Edición 02 y dígame qué obtiene. Aprecio tu cooperacion. –
@ João 'file' produce BS en este archivo. :-( –