Como faço para corrigir a codificação de caracteres de um arquivo?

votos
41

Eu tenho um arquivo de texto codificado ANSI que não deveria ter sido codificado como ANSI, como não foram acentuados caracteres que ANSI não suporta. Eu prefiro trabalhar com UTF-8.

Os dados podem ser decodificado corretamente ou está perdido na transcodificação?

Quais as ferramentas que eu poderia usar?

Aqui está uma amostra do que eu tenho:

ç é

Eu posso dizer a partir do contexto (cafà © deve ser CAFE) que estes devem ser esses dois personagens:

ç é
Publicado 25/09/2008 em 10:31
fonte usuário
Em outras línguas...                            


12 respostas

votos
18

EDIT: Uma possibilidade simples para eliminar antes de entrar em soluções mais complicados: você já tentou definir o conjunto de caracteres para UTF-8 no editor de texto em que você está lendo o arquivo? Este poderia ser apenas um caso de alguém lhe enviando um arquivo UTF-8 que você está lendo em um conjunto editor dizer CP1252.

Tendo apenas dois exemplos, este é um caso de utf8 ser lido através da lente de uma codificação de um byte, provavelmente uma das iso-8859-1, iso-8859-15, ou CP1252. Se você pode postar exemplos de outros personagens problemáticos, deve ser possível para reduzir isso para baixo mais.

Como a inspeção visual dos personagens pode ser enganosa, você também vai precisar de olhar para os bytes subjacentes: o § você vê na tela pode ser tanto 0xA7 ou 0xc2a7, e que vai determinar o tipo de conversão conjunto de caracteres que você tem que fazer.

você pode assumir que todos os seus dados tem sido distorcida em exatamente da mesma forma - que veio da mesma fonte e passado pela mesma sequência de transformações, de modo que, por exemplo, não há um único e em seu texto, é sempre UMA§? Se assim for, o problema pode ser resolvido com uma sequência de conversões conjunto de caracteres. Se você pode ser mais específico sobre o ambiente que você está dentro e o banco de dados que você está usando, alguém aqui pode provavelmente dizer-lhe como realizar a conversão apropriada.

Caso contrário, se os personagens problemáticos estão ocorrendo apenas em alguns lugares em seus dados, você terá que levá-la exemplo, por exemplo, com base em premissas ao longo das linhas de "nenhum autor pretendia colocar § em seu texto, por isso sempre que você vê -lo, substitua por ç". A última opção é mais arriscado, em primeiro lugar, porque essas suposições sobre as intenções dos autores pode estar errado, em segundo lugar, porque você vai ter que identificar cada personagem problema sozinho, o que pode ser impossível se houver muito texto para inspecionar visualmente ou se está escrito em um idioma ou sistema de escrita que é estranho para você.

Respondeu 25/09/2008 em 19:31
fonte usuário

votos
16

Siga estes passos com Notepad ++

1- Copie o texto original

2- Em Notepad ++, novo arquivo aberto, mudança Encoding -> escolher uma codificação você acha que o texto original segue. Tente também a codificação "ANSI", como às vezes arquivos Unicode são lidos como ANSI por certos programas

3 Paste

4 Depois de converter para Unicode, indo novamente sobre o mesmo menu: Codificação -> "Encode em UTF-8" (Não "Convert to UTF-8") e espero que ela vai se tornar legível

Os passos acima se aplicam para a maioria dos idiomas. Você só precisa adivinhar a codificação original antes de colar no bloco de notas ++, em seguida, converter através do mesmo menu para uma codificação baseada em Unicode alternativo para ver se as coisas se tornam legível.

existe a maioria das línguas em 2 formas de codificação: 1- A forma antiga legado ANSI (ASCII), apenas 8 bits, foi usado inicialmente pela maioria dos computadores. 8 bits só permitiu 256 possibilidades, 128 deles, onde os caracteres latinos e controle regulares, os últimos 128 bits eram lidos de forma diferente, dependendo das configurações de idioma PC 2- O novo padrão Unicode (até 32 bits) indicar um código único para cada personagem em todas as línguas atualmente conhecidos e muito mais para vir. se um arquivo é unicode deve ser entendido em qualquer PC com fonte do idioma instalado. Note que, mesmo UTF-8 vai até 32 bits e é tão amplo como UTF-16 e UTF-32 só ele tenta ficar 8 bits com caracteres latinos apenas para economizar espaço em disco

Respondeu 18/12/2013 em 07:15
fonte usuário

votos
8

Quando você vê sequências de caracteres como o § Ã © e, geralmente é uma indicação de que um arquivo UTF-8 foi aberto por um programa que lê-lo como ANSI (ou similar). caracteres Unicode como estes:

U + 00C2 Latina letra maiúscula A com acento circunflexo
U + 00C3 Latina letra maiúscula A com til
U + 0082 Pausa permitida aqui
U + 0083 Sem pausa aqui

tendem a aparecer no texto ANSI por causa da estratégia de bytes variável que UTF-8 usos. Esta estratégia é explicado muito bem aqui .

A vantagem para você é que o aparecimento desses personagens estranhos torna relativamente fácil de encontrar, e, assim, substituir, os casos de conversão incorreta.

Acredito que, uma vez ANSI sempre usa 1 byte por caractere, você pode lidar com esta situação com uma simples operação de busca e substituição. Ou, mais convenientemente, com um programa que inclui uma tabela de mapeamento entre as sequências de ofensa e os caracteres desejados, como estes:

â € œ -> “# deve ser uma abertura dupla encaracolado Citação
â €? ->”# deve ser uma citação encaracolado duplo fechamento

Qualquer texto dado, assumindo que é em Inglês, terá um número relativamente pequeno de diferentes tipos de substituições.

Espero que ajude.

Respondeu 25/09/2008 em 13:40
fonte usuário

Respondeu 25/09/2008 em 10:43
fonte usuário

votos
3

Com vim de linha de comando:

vim -c "set encoding=utf8" -c "set fileencoding=utf8" -c "wq" filename
Respondeu 25/09/2008 em 10:34
fonte usuário

votos
1

No editor de texto sublime, o arquivo -> reabrir com codificação -> escolha a codificação correta.

Geralmente, a codificação é detectada automaticamente, mas se não, você pode usar o método acima.

Respondeu 29/06/2016 em 13:42
fonte usuário

votos
1

Se você ver pontos de interrogação no arquivo ou se os acentos já está perdido, voltando para utf8 não vai ajudar sua causa. por exemplo, se café tornou-se café - mudança de codificação por si só não vai ajudar (e você vai precisar de dados original).

você pode colar algum texto aqui, que vai nos ajudar a responder com certeza.

Respondeu 25/09/2008 em 10:50
fonte usuário

votos
0

Eu encontrei esta pergunta na busca de uma solução para um problema de página de código que tive com caracteres chineses, mas no final o meu problema era apenas um problema com o Windows não exibi-los corretamente na interface do usuário.

No caso de alguém tem esse mesmo problema, você pode corrigi-lo simplesmente alterando o local em janelas para a China e, em seguida, de volta.

Eu encontrei a solução aqui:

http://answers.microsoft.com/en-us/windows/forum/windows_7-desktop/how-can-i-get-chinesejapanese-characters-to/fdb1f1da-b868-40d1-a4a4-7acadff4aafa?page=2&auth= 1

Também upvoted resposta de Gabriel como olhar para os dados no bloco de notas ++ foi o que me deu a dica sobre o Windows.

Respondeu 28/01/2016 em 11:47
fonte usuário

votos
0

No OS X Synalyze It! permite exibir partes do seu arquivo em diferentes codificações (todos os que são suportados pela biblioteca UTI). Depois de saber qual é a codificação de origem você pode copiar o arquivo inteiro (bytes) via área de transferência e inserir um novo documento em que a codificação alvo (UTF-8 ou o que quiser) é selecionado.

Muito útil quando se trabalha com UTF-8 ou outras representações Unicode é UnicodeChecker

Respondeu 26/06/2013 em 20:36
fonte usuário

votos
0

Eu encontrei uma maneira simples de detectar automaticamente as codificações de arquivos - alterar o arquivo para um arquivo de texto (em um Mac renomear a extensão do arquivo para .txt) e arraste-o para uma janela Mozilla Firefox (ou File -> Open). Firefox irá detectar a codificação - você pode ver o que ele veio com em Exibir -> Codificação de caracteres.

Eu mudei a codificação do meu arquivo usando TextMate uma vez que eu sabia que a codificação correta. Arquivo -> Reabrir usando codificação e escolher a sua codificação. Então Arquivo -> Salvar como e alterar a codificação para terminações UTF-8 e de linha para LF (ou o que quiser)

Respondeu 23/03/2010 em 20:26
fonte usuário

votos
0

Existem programas que tentam detectar a codificação de um arquivo como chardet . Então você pode convertê-lo para uma codificação diferente usando iconv. Mas isso requer que o texto original ainda está intacto e nenhuma informação é perdida (por exemplo, por remoção de acentos ou letras acentuadas inteiros).

Respondeu 25/09/2008 em 11:09
fonte usuário

votos
0

E depois há o um pouco mais velho recode programa.

Respondeu 25/09/2008 em 10:47
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more