Recentemente tive alguns problemas com codificação de alguns arquivos e do próprio sistema (algumas coisas ainda não resolvidas, mas isso é outro assunto!).
O fato é que tive que fazer uma pesquisa sobre como converter um tipo de arquivo em outro. O que me impressionou não foi a dificuldade de achar uma solução, mas a complexidade de algumas soluções que eu encontrei. Pensei que certamente tal complexidade não seria necessária e estava certo !
Encontrei uma dica no rodapé do site das FunçõesZZ ensinando justamente como converter o arquivo das FunçõesZZ, que é escrito em ISO-8859-1, em UTF-8.
O comando é muito simples: iconv
Faz parte da libc6, ou seja, todo mundo têm instalado, e possuí sintaxe simples.
iconv -f codificacao_de_origem -t codificacao_de_saida arquivo
Assim para converter UTF-8 para ISO-8859-1 temos:
iconv -f utf-8 -t iso-8859-1 arquivo
Para o contrário utilizamos:
iconv -f iso-8859-1 -t utf-8 arquivo
É necessário redirecionar a saida de arquivo para algum lugar, algo como:
iconv -f utf-8 -t iso-8859-1 arquivo > novo_arquivo
Sendo assim, eu acrescentei ao meu ~/.bashrc* as seguintes linhas
alias iso2utf='iconv -f iso-8859-1 -t utf-8'
alias utf2iso='iconv -f utf-8 -t iso-8859-1'
Agora quando eu quiser converter um tipo de arquivo em outro, eu só preciso usar o iso2utf ou o utf2iso
Agora, por que tanta desinformação sobre assunto ? É tão fácil converter um tipo em outro, é tão simples !
Script para fazer a conversão em lote (Marcelo Oliveira)
O script apresenta o cuidado de não modificar seus arquivos originais, produzindo uma cópia dos mesmos em outros diretórios. Modificar o comportamento do script para converter arquivo iso-8859 para utf-8 é trivial (pelo menos para quem leu o tópico até aqui). Um detalhe importante é que o script não suporta caminhos ou nomes que contenham espaços (Posso estar enganado, mas o Marcelo deve ter utilizado esse script em um diretório de dados para internet onde espaços não são comuns e arquivos de imagem são.).
Marcelo, eu e a galera agradecemos a iniciativa e a colaboração!
#!/bin/bash
# 04/07/2007
# por Marcelo Oliveira - www.iboletim.com.br
# Licença de uso: GPL
# uso:
# utf2iso.sh diretorio-a-ser-convertido
# fecha se nao for fornecido nenhum argumento
if [ $# -eq 0 ]
then
echo "ERRO: especifique o nome da pasta com os arquivos a serem convertidos!"
echo "Uso: ./utf2iso.sh diretorio-a-ser-convertido"
exit 1
fi
# cria diretorio para armazenar arquivos convertidos
cp -R $1 iso-8859-1
# acessa diretorio com os arquivos a serem convertidos
cd $1
# cria lista de todos os arquivos que serao convertidos (estou excluindo .gif e .jpg)
lista=`find -type f | grep -v gif | grep -v jpg`
# executa conversao
for i in $lista
do
echo "convertendo... $i"
iconv -f utf-8 -t iso-8859-1 $i > ../iso-8859-1/$i;
#read; # para verificar as mensagens de erro
done
if [ $? == 0 ]
then
echo -e "\nConversao terminada com sucesso!\n"
fi
-------------------------------------
Autor do tutorial: J. F. Mitre
Fonte:
http://jfmitre.blogspot.com/2006/05/convertendo-arquivos-utf-8-em-iso-8859.html#comment-5364607875807754020