2009-03-31 27 views

Respuesta

180

codificación 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. Más bien se lo conoce como Windows-1252 en Western/U.S. sistemas. (Puede representar a otros Windows code pages en otros sistemas.) Esto es esencialmente un extension of the ASCII character set en el sentido de que incluye todos los caracteres ASCII con un código de 128 caracteres adicionales. Esta diferencia se debe al hecho de que la codificación "ANSI" es de 8 bits en lugar de 7 bits como ASCII (ASCII casi siempre está codificado en la actualidad 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 se corresponde con ningún estándar ANSI real, pero el nombre se ha atascado. ANSI no es lo mismo que UTF-8.

+27

ANSI no es solo un nombre inapropiado, 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; eso es una cuestión de hecho en blanco y negro. Dicho esto, es tan ampliamente utilizado que estamos atrapados con eso. –

+0

Sé que ANSI es la página de códigos 437, no la página de códigos de Windows 1252. Cuando ANSI mencionó los gráficos creados para los sistemas de boletines informativos, puedo garantizar que ese es el caso. – lordscarlet

+0

@lordscarlet: ANSI no los ha estandarizado, pero Windows-1252 es lo más cercano que se obtiene (al menos en Windows), ya que es un superconjunto. Ver http://en.wikipedia.org/wiki/ANSI_codepage#ANSI para referencia. – Noldorin

-3

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 echar un vistazo a it at Wikipedia.

+5

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

1

Al usar 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.

10

ASCII acaba de definir 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á de nuevo basado en ISO/IEC 8859-1 con algunas modificaciones principalmente en el rango de C1 control set 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í?!?)

20

Estrictamente hablando, no existe la codificación ANSI. El término ANSI se utiliza para varios codificaciones diferentes:

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

1. es incorrecto, 2 es correcto en una "PC occidental" solamente, 3 es correcto –

+5

@WernfriedDomscheit Los tres son incorrectos. ANSI no estandariza ninguna codificación. Pero ambas codificaciones se llaman ocasionalmente ANSI. Los estándares –

2

Básicamente "ANSI" se refiere a la página de códigos heredada en Windows. Consulte también an article by 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 hace no significa automáticamente CP1252 o América 1.

Toda la confusión a pesar de que simplemente debe evitar este tipo de problemas de hoy en día y utilizar Unicode.

1

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

44

Técnicamente, ANSI debería ser el 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, 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 la 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 de Asia oriental puede ser una codificación 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 configuraciones predeterminadas 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.

9

Érase una vez Microsoft, como todos los demás, utilizaba juegos de caracteres de 7 bits, e inventaron 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.

+0

eran material de la industria, por lo que los programadores eran nuevos en cuanto a estándares, ya que era una industria nueva. – GameDeveloper

+1

No era una industria nueva cuando se fundó Microsoft. –

1

Sólo en caso de que su PC no es un PC "occidental" y usted no sabe qué página de códigos se utiliza, se puede echar un vistazo a esta página: National Language Support (NLS) API Reference

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:\> 
Cuestiones relacionadas