ANSI para UTF-8 no Notepad ++


25

Eu tenho um texto codificado em ANSI:

Arquivo de texto ANSI

Quando tentei convertê-lo em UTF-8 (usando o menu Notepad ++ Encoding> UTF-8), recebo alguns caracteres estranhos:

Arquivo de texto UTF-8

Eu achava que o UTF-8 era um superconjunto do ANSI e, posteriormente, não teria esses problemas. Existe alguma maneira de evitar a aparição desses personagens estranhos?


Eu não vejo o que é estranho na imagem última
phuclv

Eu quis dizer os caracteres não exibidos. Alguma maneira de evitar isso?
precisa saber é o seguinte

Você editou a pergunta? Eu acho que ver as imagens invertidas
phuclv

1
Sim, desculpe, eu pressionei minha última edição logo após alguém adicionar as imagens, apagando a adição: se você puder adicioná-las novamente, isso seria ótimo!
precisa saber é o seguinte

Respostas:


38

UTF-8 não é um conjunto de caracteres, apenas uma codificação para Unicode. Os primeiros 128 caracteres são iguais a ASCII, mas diferem nos 128 bytes altos. Um byte com o conjunto de bits alto (ou> = 0x80) é um caractere estendido em ASCII enquanto em UTF-8 indica o byte inicial de uma sequência de vários bytes. Esse é o caso de 0x93 ou 0x94 acima. No entanto, não vejo nada de estranho no arquivo. Essas são aspas inteligentes ou aspas com diferentes formas de cotações de abertura e fechamento, que você costuma ver ao usar um editor de texto rico como o MS Word

Editar

A pergunta foi editada. Eu acho que é porque você escolheu a ferramenta errada. Os encodeitens de menu são para alterar a codificação se você exibir caracteres incorretos. Apenas trata a mesma sequência de bytes lida do disco como outra codificação. Como ASCII e UTF-8 são diferentes, você terá uma sequência de bytes UTF-8 malformada e verá o resultado acima. Você precisa escolher convert to UTF-8para alterar todos os bytes de entrada

codificação de bloco de notas

Você também confundiu ANSI e ASCII. O ANSI geralmente se refere ao Windows-1252, que é um conjunto de caracteres usado no Windows em inglês e em alguns idiomas da Europa Ocidental. É um superconjunto da ISO 8859-1, embora a ISO 8859-1 também possa ser referida como ANSI. A ISO 8859-1 também é os primeiros 256 pontos de código do Unicode, por isso é um subconjunto do Unicode, mas não é compatível com a codificação UTF-8. ASCII é um conjunto de caracteres de 7 bits e é um subconjunto do ANSI codificado por 8 bits, mas às vezes também é referido como ANSI, embora não seja muito correto

https://en.wikipedia.org/wiki/ANSI_character_set

Em geral, o relacionamento entre conjuntos de caracteres é o seguinte

ASCII < ISO 8859-1 < Windows-1252
        ^
        Unicode

Obrigado, desculpe por estragar o charset com a codificação. Existe alguma maneira de evitar esses caracteres não exibidos e, em vez disso, ter algumas aspas exibidas?
precisa saber é o seguinte

@ user3658425 consulte a minha edição
phuclv

1
Também editei as informações ANSI / ASCII acima
phuclv

3
Observe que, em geral, "UTF-8 sem Byte Order Mark" é o que você deseja. Como vários outros disseram no passado, "UTF-8 é a única codificação de string útil".
Riking

4
@WillihamTotland utf8everywhere.org
phuclv
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.