arquivo ANSI com charSet com caractere latino

0

Estou com uma dúvida sobre codificação / charset.

Eu faço um teste. Digitando a string "TEST Á" sem as aspas no Notepad ++ com codificação em ANSI.

"Os caracteres ANSI são todos iguais para caracteres ASCII, como dígitos de 0 a 9 e letras inglesas az e AZ," ( link )

Para minha surpresa, o notepad ++ salvou o arquivo normalmente, eu posso lê-lo no notepad ++ normalmente com acentuation na Ansi Encoding.

Outro teste, eu abri o mesmo arquivo com HxD ( link ), e meu arquivo está correto também, com o caractere latino "Á" no final do arquivo. Veja o hexa abaixo:

54 45 53 54 20 C1 -> TEST Á

Eu pensei que deveria usar a codificação UTF-8 para isso funcionar, mas não é necessário.

Alguém pode me explicar como isso é possível?

    
por Jeferson Tenorio 30.08.2012 / 14:55

2 respostas

0

Você pode usar qualquer conjunto de caracteres e qualquer codificação para criar um arquivo e visualizá-lo.

Você só precisa ter certeza, ao visualizar, de usar o mesmo conjunto e codificação usados para gravar o arquivo.

A maioria dos conjuntos de caracteres tem uma grande sobreposição. Por exemplo, a maioria dos conjuntos de caracteres (excluindo EBCDIC e outros) têm o caractere ASCII definido nas mesmas posições (ou seja, com os mesmos pontos de código) que ASCII. Portanto, você poderia escrever um arquivo no conjunto de caracteres Unicode com codificação UTF-8 e, desde que o arquivo contivesse apenas caracteres que estão em ASCII, você poderia visualizar esse arquivo usando uma codificação do Windows Latin-1.

Nota: a Microsoft é muito desleixada com termos como "ANSI" e "Unicode".

Atualização:

Primeiramente, você deve prestar atenção em Resposta do Jukka , pois Jukka é especialista em este assunto .

Quanto ao seu Á, veja este extrato de aqui

Dec Hex ASC PC  437 850 Win Lat1    Uni
192 00C0        └   └   └   À   À   À
193 00C1        ┴   ┴   ┴   Á   Á   Á
194 00C2        ┬   ┬   ┬   Â   Â   Â
195 00C3        ├   ├   ├   Ã   Ã   Ã
196 00C4        ─   ─   ─   Ä   Ä   Ä
197 00C5        ┼   ┼   ┼   Å   Å   Å

Observe que Á está no ponto de código 194 (0xC1) no Windows Latin-1, no ISO 8859-1 Latin 1 e no Unicode / ISO 10646. Se você escreveu Á no Windows Latin-1, poderá visualizá-lo como ISO 8859 -1.

Você teria problemas se tentasse lê-lo como Unicode, pois as codificações Unicode usam vários bytes para representar esse caractere,

# echo $LANG
en_US.UTF-8

# cat t
TEST Á

# hexdump -C t
00000000  54 45 53 54 20 c3 81 0a                           |TEST ...|
00000008

Note que Á (ponto de código Unicode 00C1) é codificado em UTF-8 como c3 81

    
por 30.08.2012 / 15:04
0

A codificação padrão no Notepad ++ é chamada de "ANSI", sem esclarecimentos; pode significar windows-1252 , ou pode significar que qualquer codificação de 8 bits é a nativa do sistema Codificação de 8 bits (no seu caso, provavelmente é o windows-1252 de qualquer maneira). "ANSI" é um nome impróprio da Microsoft para suas codificações de 8 bits, uma das quais (agora conhecida como windows-1252) foi submetida há muito tempo ao American National Standards Institute para aprovação - e rejeitada.

Não há problema em inserir “Á” na codificação windows-1252. Naturalmente, o Notepad ++ também exibe OK. Muitos outros programas também.

Você precisaria do UTF-8 se quisesse digitar "Ć" por exemplo. Muitas pessoas usam o UTF-8, mesmo que não precisem de caracteres fora do windows-1252, para evitar a necessidade de alterar a codificação mais tarde, se novos caracteres forem adicionados.

    
por 30.08.2012 / 15:24