Como converter várias ISO8859-1 para UTF-8

6

Estou tentando converter vários arquivos SQL de ISO8859-1 para UTF-8

Estou fazendo o seguinte comando:

iconv -f ISO_8859-1 -t UTF-8 *.sql

O que eu obtenho é uma saída do seu conteúdo para o terminal que é muito longo e depois de terminar a saída que eles não convertem. Eles continuam os mesmos. Gostaria de poder converter e não ver a saída.

    
por Luis Alvarado 10.05.2011 / 02:05

2 respostas

7

iconv é o padrão para enviar sua saída para stdout, o que explica o comportamento do que você viu. Você pode direcionar a saída para um arquivo usando a opção -o , mas isso gerará apenas um único arquivo de saída e provavelmente não ajudará a atualizar os arquivos no lugar. Talvez tente algo assim:

for file in *.sql; do
    iconv -f ISO-8859-1 -t UTF-8 -o "$file".utf "$file" && mv "$file".utf "$file"
done

Isso converterá cada arquivo e armazenará o resultado em um arquivo temporário, movendo-o para o nome do arquivo original se a conversão foi bem-sucedida.

    
por James Henstridge 10.05.2011 / 02:29
1

Também é possível usar o rsync para esta tarefa, com uma vantagem, você manterá um backup. Se um dos arquivos convertidos já estiver na codificação de destino, você vai atrapalhar.

rsync -va --iconv=iso88591,utf8 /source/latin1/ /destination/utf8/
    
por SergioAraujo 26.06.2015 / 22:14