¿Qué es el formato ANSI?

¿Qué es el formato de encoding ANSI? ¿Es un formato predeterminado del sistema? ¿De qué manera difiere de ASCII?

La encoding ANSI es un término ligeramente genérico que se utiliza para referirse a la página de códigos estándar en un sistema, generalmente Windows. Se le conoce más apropiadamente como Windows-1252 en sistemas occidentales / estadounidenses. (Puede representar 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 un código de 128 caracteres adicionales. Esta diferencia se debe al hecho de que la encoding “ANSI” es de 8 bits en lugar de 7 bits, como ASCII es (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 encoding generalmente se conoce como ANSI.

El nombre “ANSI” es un nombre inapropiado, ya que no se corresponde con ningún estándar ANSI real, pero el nombre se ha estancado. ANSI no es lo mismo que UTF-8.

Técnicamente, ANSI debe ser lo mismo que US-ASCII. Hace referencia 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 juego de caracteres de 7 bits.

Sin embargo, los años de mal uso del término por parte del DOS y, posteriormente, de la comunidad de Windows, han dejado su significado práctico como “la página de códigos del sistema de cualquier máquina que se utilice”. La página de códigos del sistema también se conoce a veces como ‘mbcs’, ya que en los sistemas de Asia oriental puede ser una encoding de múltiples bytes por carácter. Algunas páginas de códigos pueden incluso usar bytes de borrado de bits superiores como bytes finales en una secuencia multibyte, por lo que ni siquiera es estrictamente compatible con ASCII simple … pero incluso 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 encoding externo.

Estrictamente hablando, no existe la encoding ANSI. Coloquialmente, el término ANSI se usa para varias codificaciones diferentes:

  1. ISO 8859-1
  2. Windows CP1252
  3. Codificación del sistema actual en una máquina con Windows (en la terminología de la API de Win32).

ASCII solo 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 de ANSI no es correcta porque en realidad es la norma ISO / IEC 8859 la 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 está nuevamente basado 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í?!?)

Hubo un tiempo en que Microsoft, como todos los demás, usaba juegos de caracteres de 7 bits e inventaban los propios cuando les convenía, aunque conservaban ASCII como un subconjunto central. Luego se dieron cuenta de que el mundo había cambiado a las codificaciones de 8 bits y que había normas internacionales, como la familia ISO-8859. En esos días, si deseaba obtener un estándar internacional y vivía en los EE. UU., Lo compraba al Instituto Nacional de Estándares Americanos, ANSI, que republicaba los estándares internacionales con sus propias marcas y números (eso es porque el gobierno de EE. UU. Quiere conformidad con los estándares estadounidenses, no con los estándares internacionales). Así que la copia de Microsoft de ISO-8859 decía “ANSI” en la portada. Y como Microsoft no estaba muy acostumbrado a los estándares en aquellos días, no se daban cuenta de que ANSI también publicaba muchos otros estándares. Así que se refirieron a los estándares en 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 encontraron su 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 aún escuchas el nombre hoy.

Básicamente “ANSI” se refiere a la página de códigos heredada en Windows. Ver también un artículo de Raymond Chen sobre este tema. 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 debes evitar estos problemas hoy en día y usar Unicode.

En caso de que su PC no sea una PC “occidental” y usted no sepa qué página de códigos se utiliza, puede echarle un vistazo a esta página: Referencia de API de National Language Support (NLS)

[Microsoft eliminó esta referencia, lo toma de la web-archive National Language Support (NLS) Referencia de la API

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 a 255 están definidos por varias páginas de códigos ANSI para permitir soporte limitado para otros idiomas. Para dar sentido a una cadena codificada ANSI, necesita saber qué página de códigos utiliza.

Recuerdo cuando el texto “ANSI” hacía referencia a los códigos de escape pseudo VT-100 utilizables en DOS a través del controlador ANSI.SYS para alterar el flujo de transmisión de texto … Probablemente no sea a lo que se refiere, pero si se trata de http: //en.wikipedia.org/wiki/ANSI_escape_code

ANSI (también conocido como Windows-1252 / WinLatin1) es una encoding de caracteres del alfabeto latino, bastante similar a ISO-8859-1 . Es posible que desee echarle un vistazo en Wikipedia .

    Intereting Posts