Respuestas:
La codificación ANSI es un término ligeramente genérico utilizado para referirse a la página de códigos estándar en un sistema, generalmente Windows. Se refiere más bien conocido como Windows 1252 en los sistemas occidentales / estadounidenses. (Puede representar ciertas otras páginas de códigos de Windows en otros sistemas). Esta es esencialmente una extensión del conjunto de caracteres ASCII, ya que incluye todos los caracteres ASCII con 128 códigos de caracteres adicionales. Esta diferencia se debe al hecho de que la codificación "ANSI" es de 8 bits en lugar de 7 bits como es ASCII (ASCII casi siempre se codifica hoy en día como bytes de 8 bits con el MSB establecido en 0). Consulte el artículo para obtener una explicación de por qué esta codificación generalmente se conoce como ANSI.
El nombre "ANSI" es un nombre inapropiado, ya que no corresponde a ningún estándar ANSI real, pero el nombre se ha pegado. ANSI no es lo mismo que UTF-8.
windows-1254
.
Técnicamente, ANSI debería ser lo mismo que US-ASCII. Se refiere al estándar ANSI X3.4, que es simplemente la versión ratificada de ASCII de la organización ANSI . El uso de los caracteres del conjunto de bits superior no está definido en ASCII / ANSI ya que es un conjunto de caracteres de 7 bits.
Sin embargo, años de mal uso del término por parte del DOS y, posteriormente, la comunidad de Windows ha dejado su significado práctico como "la página de códigos del sistema de cualquier máquina que se esté utilizando". La página de códigos del sistema también se conoce a veces como 'mbcs', ya que en los sistemas del este asiático puede ser una codificación de múltiples bytes por carácter. Algunas páginas de códigos pueden incluso usar bytes de limpieza de bits superiores como bytes finales en una secuencia multibyte, por lo que ni siquiera es estrictamente compatible con ASCII simple ... pero aun así, todavía se llama "ANSI".
En la configuración predeterminada de EE. UU. Y Europa occidental, "ANSI" se asigna a la página de códigos de Windows 1252. Esto no es lo mismo que ISO-8859-1 (aunque es bastante similar). En otras máquinas podría ser cualquier otra cosa. Esto hace que "ANSI" sea completamente inútil como un identificador de codificación externo.
Estrictamente hablando, no existe la codificación ANSI. Coloquialmente, el término ANSI se usa para varias codificaciones diferentes:
Érase una vez que Microsoft, como todos los demás, usaba juegos de caracteres de 7 bits, e inventaron los suyos cuando les convenía, aunque mantuvieron ASCII como un subconjunto central. Luego se dieron cuenta de que el mundo había pasado a las codificaciones de 8 bits y que existían estándares internacionales, como la familia ISO-8859. En aquellos días, si quería obtener un estándar internacional y vivía en los EE. UU., Lo compró en el American National Standards Institute, ANSI, que volvió a publicar los estándares internacionales con su propia marca y números (eso es porque el gobierno de EE. UU. Quiere conformidad con los estándares estadounidenses, no con los estándares internacionales). Entonces, la copia de ISO-8859 de Microsoft decía "ANSI" en la portada. Y debido a que Microsoft no estaba muy acostumbrado a los estándares en esos días, no lo hicieron No se dé cuenta de que ANSI también publicó muchos otros estándares. Entonces, se refirieron a los estándares de la familia ISO-8859 (y las variantes que inventaron, porque realmente no entendían los estándares en esos días) por el nombre en la portada, "ANSI", y se abrió camino en Microsoft documentación del usuario y, por lo tanto, en la comunidad de usuarios. Eso fue hace unos 30 años, pero a veces todavía escuchas el nombre hoy.
ASCII simplemente define una página de códigos de 7 bits con 128 símbolos. ANSI extiende esto a 8 bits y hay varias páginas de códigos diferentes para los símbolos 128 a 255.
La denominación ANSI no es correcta porque en realidad es la norma ISO / IEC 8859 que define estas páginas de códigos. Ver ISO / IEC 8859 para referencia. Hay 16 páginas de códigos ISO / IEC 8859-1 a ISO / IEC 8859-16.
Windows-1252 se basa nuevamente en ISO / IEC 8859-1 con algunas modificaciones principalmente en el rango del control C1 establecido en el rango de 128 a 159. Wikipedia afirma que Windows-1252 también se conoce como ISO-8859-1 con un segundo guión entre ISO y 8859. (¡Increíble! ¿Quién hace algo así?!?)
Básicamente "ANSI" se refiere a la página de códigos heredada en Windows. Vea también un artículo de Raymond Chen sobre este tema:
La fuente de esto proviene del hecho de que la página de códigos de Windows 1252 se basó originalmente en un borrador ANSI, que se convirtió en la Norma ISO 8859-1.
Los primeros 127 caracteres son idénticos a ASCII en la mayoría de las páginas de códigos, aunque los caracteres superiores varían.
Sin embargo, ANSI no significa automáticamente CP1252 o Latin 1.
A pesar de toda confusión, simplemente debe evitar estos problemas hoy en día y usar Unicode.
En caso de que su PC no sea una PC "occidental" y no sepa qué página de códigos se utiliza, puede echar un vistazo a esta página: Referencia de la API de compatibilidad con el idioma nacional (NLS)
[Microsoft eliminó esta referencia, tómela como referencia de API de soporte de idiomas nacionales (NLS) de archivo web
O puede consultar su registro:
C:\>reg query HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage /f ACP
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage
ACP REG_SZ 1252
End of search: 1 match(es) found.
C:\>
Cuando se usan caracteres de un solo byte, el formato ASCII define los primeros 127 caracteres. Los caracteres extendidos de 128-255 están definidos por varias páginas de códigos ANSI para permitir un soporte limitado para otros idiomas. Para dar sentido a una cadena codificada ANSI, debe saber qué página de códigos utiliza.
Recuerdo cuando el texto "ANSI" se refería a los pseudo códigos de escape VT-100 que se pueden usar en DOS a través del controlador ANSI.SYS para alterar el flujo de texto en transmisión ... Probablemente no a lo que se refiere, pero si es http: //en.wikipedia.org/wiki/ANSI_escape_code
ANSI (también conocido como Windows-1252 / WinLatin1) es una codificación de caracteres del alfabeto latino, bastante similar a ISO-8859-1 . Es posible que desee echarle un vistazo en Wikipedia .