Trabalhando com arquivos de texto codificados como Windows-1250 e UTF-8

5

Estou alternando entre o Ubuntu e o Windows com freqüência, portanto, tenho alguns problemas de codificação com arquivos de texto.

Se eu salvar o arquivo de texto no Ubuntu, tudo funcionará bem em ambos os sistemas. Mas o Ubuntu não descobre a codificação de arquivos salvos no Windows. Toda vez que eu abro o "arquivo windows" no editor de texto do Ubuntu, eu tenho que mudar as opções de codificação.

A solução está mudando a codificação do Windows-1250 para o utf-8.

Portanto, a questão é como abrir cada arquivo com o Windows-1250 e salvá-lo com utf-8, para cada arquivo em subdiretórios do diretório atual (recursivamente, quero dizer). Posso fazê-lo no terminal ou preciso de alguma aplicação externa.

Estou ansioso pela sua ajuda.

    
por dagi12 15.05.2015 / 18:40

2 respostas

7

Eu prefiro usar recode para isso. Não está instalado por padrão, mas está disponível através do pacote com o mesmo nome. Também muda os finais de linha CRLF para LF.

sudo apt-get install recode
recode cp1250.. file.txt

Você pode fazer isso para todos os arquivos txt em uma pasta inteira

recode cp1250.. ./*.txt

E de forma recursiva, combinando com find

find . -type f -name "*.txt" -exec recode cp1250.. {} +

A opção padrão é usar o comando iconv , que é instalado por padrão, mas isso não altera os finais de linha, então você precisa fazer isso em outra etapa:

iconv -f cp1250 < file.txt | sed $'s/\r$//' > newfile.txt

A longo prazo, recomendo alterar o conjunto de caracteres padrão do editor do Windows e a linha que termina nos terminais de linha UTF-8 e UNIX (LF, \n ) para evitar a conversão após o fato.

CR significa Retorno de carro ( \r )
LF significa Alimentação de linha ( \n )

O Windows usa ambos, mas sistemas semelhantes a unix usam apenas LF .

    
por geirha 15.05.2015 / 18:47
0

O Sublime Text facilita muito a gravação em diferentes codificações de arquivos. Você também pode reabrir com codificação diferente e trabalhar com vários arquivos, verifique esta resposta para obter mais detalhes.

    
por Bretsko 16.10.2016 / 18:53