Logo Hardware.com.br
FranciscoLima
FranciscoLim... Membro Junior Registrado
103 Mensagens 5 Curtidas

Como converter em lote arquivos codificados em ISO8859-1 para UTF-8

#1 Por FranciscoLim... 13/07/2007 - 23:51
Para que está com uma Distro que usa o UTF-8 e tem muitos arquivos e/ou scripts codificados em ISO8859-1, vai aí a dica para alterar todos os arquivos em poucos passos.

Se o problema é só no nome dos arquivos ou diretórios dá para fazer todos de uma vez com o convmv.
Estando como root use o comando:
apt-get install convmv

o comando para renomear um diretório inteiro, recursivamente é:

convmv -f iso8859-1 -t utf8 -r --notest nome_do_diretorio


Já no caso de problemas de acentuação dentro dos arquivos. Podemos usar o recode para corrigir isto:
como root instale o recode com os comandos (estando conectado na internet, é claro):
apt-get install recode

o comando para o recode é:

recode iso8859-1..utf-8 nomedoarquivo


Para alterar a codificação de todos os arquivos de um diretório como, por exemplo, os scrips do Morimoto que estão em /usr/local/bin, você pode usar o script abaixo:


#!/bin/bash

# comando do script:
# iso2utf.sh diretorio

#script escrito por FranciscoLima faclsp@gmail.com


#verifica se o recode está instalado
if test -e /usr/bin/recode
then > /dev/null
else echo -e "\nATENÇÃO: Este script necessita do Recode instalado."
echo -e "Use \"#apt-get install recode\" para instalá-lo\n"
exit 2
fi

# testa se foi indicado um parâmetro
if [ $# -eq 0 ]
then
echo "ERRO: especifique o nome da pasta com os arquivos a serem convertidos!"
exit 1
fi
<pre><code>

# faz uma cópia do diretório. Só por segurança
echo -e "\nCopiando diretório $1 para $1-becape, só por segurança\n"
cp -r $1 $1-becape

# acessa diretório com os arquivos a serem convertidos
cd $1

# cria lista de todos os arquivos que serão convertidos
lista=`find -type f`

# executa conversão
for i in $lista
do
echo "convertendo... $i"
#transforma o arquivo em iso, caso não seja, para evitar erro do utf sendo passado 2 vezes
recode utf-8..iso8859-1 $i 2> /dev/null
#recodifica realmente
recode iso-8859-1..utf-8 $i
done

if [ $? == 0 ]
then
echo -e "\nConversão terminada com sucesso!\n"
fi


copie e salve o arquivo com o nome iso2utf.sh
dê permissões de execução e use com o comando

./iso2utf.sh nome_do_diretorio
Responder
jqueiroz
jqueiroz Cyber Highlander Registrado
104K Mensagens 5.7K Curtidas
#5 Por jqueiroz
01/09/2008 - 10:27
lgf disse:
Essa conversão pode dar problema quando for brir o mesmo arquivo no Windows por exemplo ?


Essa conversão deve ser feita apenas nos sistemas de arquivos nativos (ReiserFS, Ext3, etc). Não é para fazer em partições windows, deixe que o próprio windows cuida disso.
"chmod 777 nunca ajudou ninguém" (c) 2002-2021 JQueiroz/FGdH
Conheça o Blog do Zekke
Responder Tópico
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal