¿Qué es el formato ANSI?

Respuestas:

246

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.

Noldorin
fuente
42
ANSI no es solo un nombre inapropiado "leve", es un nombre completamente incorrecto. Este nombre implica claramente que a lo que se refiere es a un estándar ANSI, que no lo es; Esa es una cuestión de hecho en blanco y negro. Dicho esto, es tan ampliamente utilizado que estamos atrapados en él.
Nate CK
1
Sé que ANSI es la página de códigos 437, no la página de códigos de Windows 1252. Cuando ANSI se refirió a los gráficos creados para los sistemas de boletines electrónicos, puedo garantizar que ese es el caso.
lordscarlet
@lordscarlet: ANSI no los ha estandarizado, pero Windows-1252 es lo más cercano que tienes (al menos en Windows), ya que es un superconjunto. Ver en.wikipedia.org/wiki/ANSI_codepage#ANSI para referencia.
Noldorin el
44
"ANSI" claramente no se refiere a ningún estándar ANSI, sin embargo, es un hecho que puede elegir "Codificación: ANSI", por ejemplo, en el Bloc de notas cuando guarda un archivo. Y la pregunta real es: "¿Qué significa"? Esta respuesta es, de lejos, la mejor.
Wernfried Domscheit
1
En mi caso, ANSI se refería windows-1254.
Ramazan Polat
59

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.

bobince
fuente
32

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

  1. ISO 8859-1
  2. Windows CP1252
  3. Codificación actual del sistema en una máquina Windows (en terminología API Win32).
Nemanja Trifunovic
fuente
Eso está mal. La página de códigos de Windows 1252 se creó según la norma ISO 8859-1, pero no es completamente igual. El término ANSI hace referencia al estándar ISO 8859-x.
Patrik
17

É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.

Michael Kay
fuente
los estándares eran cosas de la industria, ¿entonces los programadores eran nuevos en los estándares ya que era una industria nueva?
CoffeDeveloper
1
No era una industria nueva cuando se fundó Microsoft.
Michael Kay
Microsoft tiene una actitud problemática y controvertida hacia la interoperabilidad en general. Cuando decidieron a fines de la década de 1990 "abrazar y extender" los estándares en lugar de rechazarlos directamente, fue un cambio notable, aunque todavía no era un enfoque responsable hacia la interoperabilidad adecuada. (Se podría argumentar que el progreso es imposible si solo se adhiere a los estándares existentes, pero obviamente esa no es la razón principal por la que lo hacen de esta manera.)
tripleee
14

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í?!?)

Daniel Brückner
fuente
5

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.

Joey
fuente
4

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:\>
Wernfried Domscheit
fuente
2

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.

Eric Petroelje
fuente
1

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

jmucchiello
fuente
-4

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 .

moff
fuente
66
No es CP1252 para todos; eso depende mucho de la región.
Joey