O que é o formato ANSI?

216

O que é o formato de codificação ANSI? É um formato padrão do sistema? De que maneira ele difere do ASCII?

web dunia
fonte

Respostas:

245

Codificação ANSI é um termo ligeiramente genérico usado para se referir à página de código padrão em um sistema, geralmente Windows. É mais conhecido como Windows-1252 em sistemas ocidentais / americanos. (Pode representar outras páginas de código do Windows em outros sistemas.) Essa é essencialmente uma extensão do conjunto de caracteres ASCII, pois inclui todos os caracteres ASCII com 128 códigos de caracteres adicionais. Essa diferença se deve ao fato de a codificação "ANSI" ser de 8 bits em vez de 7 bits, como é o ASCII (o ASCII quase sempre é codificado atualmente como bytes de 8 bits com o MSB definido como 0). Consulte o artigo para obter uma explicação de por que essa codificação é geralmente chamada de ANSI.

O nome "ANSI" é um nome impróprio, pois não corresponde a nenhum padrão ANSI real, mas o nome ficou bloqueado. ANSI não é o mesmo que UTF-8.

Noldorin
fonte
42
ANSI não é apenas um nome impróprio "leve", é um nome completamente errado. Esse nome implica claramente que o que quer que se refira seja um padrão ANSI, o que não é; isso é uma questão de fato em preto e branco. Com isso dito, é tão amplamente usado que estamos presos a ela.
Nate CK
1
Conheço o ANSI como sendo o Código Página 437, não o Windows Página 1252. Quando ANSI se referia aos gráficos criados para sistemas de quadro de avisos, posso garantir que é esse o caso.
precisa saber é o seguinte
@lordscarlet: O ANSI não os padronizou, mas o Windows-1252 é o mais próximo possível (pelo menos no Windows), como um superconjunto. Veja en.wikipedia.org/wiki/ANSI_codepage#ANSI para referência.
Noldorin
4
"ANSI" claramente não se refere a nenhum padrão ANSI, no entanto, é fato que você pode escolher "Codificação: ANSI", por exemplo, no Bloco de Notas ao salvar um arquivo. E a pergunta real é: "O que isso significa"? Esta resposta é de longe a melhor.
Wernfried Domscheit 15/03/19
1
No meu caso, o ANSI estava se referindo windows-1254.
Ramazan Polat
59

Tecnicamente, o ANSI deve ser o mesmo do US-ASCII. Refere-se ao padrão ANSI X3.4, que é simplesmente o ANSI versão ratificada do ASCII da organização . O uso dos caracteres do conjunto de bits superior não está definido no ASCII / ANSI, pois é um conjunto de caracteres de 7 bits.

No entanto, anos de uso indevido do termo pela comunidade DOS e subseqüentemente Windows deixaram seu significado prático como "a página de código do sistema de qualquer máquina que esteja sendo usada". A página de código do sistema também é conhecida como 'mbcs', uma vez que nos sistemas do Leste Asiático pode ser uma codificação de vários bytes por caractere. Algumas páginas de código podem até usar bytes limpos na parte superior como bytes finais em uma sequência multibyte, por isso nem é estritamente compatível com ASCII simples ... mas mesmo assim, ainda é chamado de "ANSI".

Nas configurações padrão dos EUA e da Europa Ocidental, “ANSI” é mapeado para a página de códigos 1252 do Windows. Isso não é o mesmo que ISO-8859-1 (embora seja bastante semelhante). Em outras máquinas, poderia ser qualquer outra coisa. Isso torna o "ANSI" totalmente inútil como um identificador de codificação externo.

bobince
fonte
32

A rigor, não existe codificação ANSI. Coloquialmente, o termo ANSI é usado para várias codificações diferentes:

  1. ISO 8859-1
  2. Windows CP1252
  3. Codificação atual do sistema em uma máquina Windows (na terminologia da API do Win32).
Nemanja Trifunovic
fonte
Isso esta errado. A página de código 1252 do Windows foi criada com base na ISO 8859-1, mas não é completamente igual. O termo ANSI faz referência ao padrão ISO 8859-x.
Patrik
17

Antes, a Microsoft, como todo mundo, usava conjuntos de caracteres de 7 bits e inventou os seus próprios quando lhes convinha, embora mantivessem o ASCII como um subconjunto principal. Então eles perceberam que o mundo havia migrado para codificações de 8 bits e que havia padrões internacionais por aí, como a família ISO-8859. Naqueles dias, se você queria se apossar de um padrão internacional e morar nos EUA, comprou-o do American National Standards Institute, ANSI, que republicou os padrões internacionais com marca e números próprios (isso é porque o governo dos EUA quer conformidade com os padrões americanos, e não internacionais). Então a cópia da ISO-8859 da Microsoft dizia "ANSI" na capa. E como a Microsoft não estava muito acostumada aos padrões da época, eles não • Perceba que a ANSI também publicou muitos outros padrões. Então, eles se referiram aos padrões da família ISO-8859 (e às variantes que eles inventaram, porque realmente não entendiam os padrões naquela época) pelo nome na capa, "ANSI", e ele chegou à Microsoft documentação do usuário e, portanto, para a comunidade de usuários. Isso foi há cerca de 30 anos, mas você ainda ouve o nome hoje.

Michael Kay
fonte
os padrões eram coisas do setor, então os programadores eram novos nos padrões, pois era um novo setor?
CoffeDeveloper
1
Não era uma indústria nova quando a Microsoft foi fundada.
Michael Kay
A Microsoft tem uma atitude problemática e controversa em relação à interoperabilidade em geral. Quando eles decidiram, no final dos anos 90, "adotar e estender" os padrões em vez de evitá-los diretamente, foi uma mudança notável, embora ainda não seja uma abordagem responsável em relação à interoperabilidade adequada. (Você poderia argumentar que o progresso é impossível se você só aderem aos padrões existentes, mas que não é, obviamente, a principal razão que eles fazê-lo desta forma.)
tripleee
14

ASCII apenas define uma página de código de 7 bits com 128 símbolos. O ANSI estende isso para 8 bits e há várias páginas de código diferentes para os símbolos 128 a 255.

A nomeação ANSI não está correta porque é realmente a norma ISO / IEC 8859 que define essas páginas de código. Veja ISO / IEC 8859 para referência. Existem 16 páginas de códigos ISO / IEC 8859-1 a ISO / IEC 8859-16.

O Windows-1252 é novamente baseado na ISO / IEC 8859-1, com algumas modificações principalmente no intervalo do controle C1 definido no intervalo de 128 a 159. A Wikipedia afirma que o Windows-1252 também é referido como ISO-8859-1 com um segundo hífen entre ISO e 8859. (Inacreditável! Quem faz algo assim?!?)

Daniel Brückner
fonte
5

Basicamente "ANSI" refere-se à página de códigos herdada no Windows. Veja também um artigo de Raymond Chen sobre este tópico:

A origem disso vem do fato de que a página de código 1252 do Windows era originalmente baseada em um rascunho ANSI, que se tornou o Padrão ISO 8859-1.

Os primeiros 127 caracteres são idênticos ao ASCII na maioria das páginas de código, embora os caracteres superiores variem.

No entanto, ANSI não significa automaticamente CP1252 ou Latin 1.

Apesar de toda a confusão, você deve simplesmente evitar esses problemas hoje em dia e usar o Unicode.

Joey
fonte
4

Caso seu PC não seja um "Western" e você não saiba qual página de códigos é usada, consulte esta página: Referência da API do NLS (National Language Support)

[A Microsoft removeu esta referência, faça o formulário Referência de API do NLS (National Language Support) de arquivo da web

Ou você pode consultar seu 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
fonte
2

Ao usar caracteres de byte único, o formato ASCII define os primeiros 127 caracteres. Os caracteres estendidos de 128-255 são definidos por várias páginas de código ANSI para permitir suporte limitado a outros idiomas. Para entender uma string codificada em ANSI, você precisa saber qual página de código ela usa.

Eric Petroelje
fonte
1

Lembro-me de quando o texto "ANSI" se referia aos pseudo códigos de escape VT-100 utilizáveis ​​no DOS por meio do driver ANSI.SYS para alterar o fluxo do fluxo de texto .... Provavelmente não é o que você está se referindo, mas se é o http: //en.wikipedia.org/wiki/ANSI_escape_code

jmucchiello
fonte
-4

ANSI (também conhecido como Windows-1252 / WinLatin1) é uma codificação de caracteres do alfabeto latino, bastante semelhante à ISO-8859-1 . Você pode dar uma olhada na Wikipedia .

zombar
fonte
6
Não é CP1252 para todos; isso depende muito da região.
Joey