- Criei um arquivo de texto copiando suas diferentes partes de diferentes fontes (páginas da web, outros arquivos de texto, arquivos PDF) para o gedit e salvando-o no arquivo. Acho que é por isso que tenho várias codificações no arquivo de texto, mas não tenho certeza. Como posso evitar a criação de um arquivo de texto com codificações mistas, copiando suas diferentes partes de diferentes fontes para o gedit?
Sempre que abro o arquivo no gedit, o gedit pode mostrar ou decodificar cada parte do texto corretamente. Parece que o gedit pode lidar com um arquivo de texto com codificações mistas, mas não tenho certeza.
Mas quando eu abrir o arquivo no emacs, haverá caracteres que não poderão ser mostrados corretamente. (Não sei por que o emacs não pode fazer isso.) Então, gostaria de converter o arquivo de codificações mistas para uma codificação única, como utf-8.
Como acho que o gedit pode detectar as codificações corretas para diferentes partes do arquivo de texto, e não sei se existem outros aplicativos que podem fazer isso, seria possível pedir ao gedit para converter o arquivo para utf-8, ou pelo menos me diga qual codificação ele encontra para qual parte do arquivo?
Obrigado.
Responder1
Hmmm... o conceito de um arquivo com várias codificações é um tanto vacilante, para ser honesto. Se você tiver um pouco de tempo,Este artigo(eEste) vale a pena ler.
Para Linux, um arquivo é uma sequência de bytes. Se você pedir a um programa para interpretá-lo como um arquivo de texto, ele fará isso usando um mapeamento entre bytes e caracteres; esse mapeamento é a codificação. Quase todos os editores de texto que conheço (não processadores de texto!) apenas entendem o conceito de uma codificação para um arquivo.
Eu não sou especialista em gedit
; talvez esteja fazendo alguma mágica, como tentar detectar automaticamente a codificação linha por linha ou bloco de texto por bloco de texto... se for o caso, você pode tentar fazer o mesmo usandoenca
(1):
while read line; do echo $line | enconv -L none -x utf8; done < text.mixed > text.utf8
... mas depende de quão bom é enca em adivinhar sua codificação (funciona quase bem com o Leste Europeu, mas não com Latin1, por exemplo).
(1) Está nos repositórios, basta instalá-lo com sudo apt-get enca
.
Responder2
Eu tive o mesmo problema e resolvi com o Emacs. A solução é citada emaqui:
Outra solução possível é marcar cada região que aparece com caracteres chineses e recodificá-la com Mx recode-region, fornecendo "O texto estava realmente em" como utf-16-le e "Mas foi interpretado como" como utf-16-be.
Outra é dividir as duas partes que possuem codificações diferentes, copiá-las em arquivos diferentes, converter a codificação de uma e adicioná-la à outra. No meu caso, isso funcionou com o Atom, mas não com o Notepad++ (utf16-le/be).