sexta-feira, 13 de julho de 2007

Como passar o Kurumin 7.0 da codificação ISO8859-1 para UTF-8

O Kurumin 7.0 está muito bom, isto não é novidade, uma das poucas coisas que me incomoda nele é a falta de unificação na codificação dos aplicativos.
Por exemplo, ao salvar o nome de um arquivo usando acentuação o cedilha no Gimp ou no Firefox, a acentuação se perde e fica
bagunçada no ambiente do Kde, isto ocorre porque os aplicativos baseados no GTK2 usam a codificação UTF-8 enquanto o resto do sistema usa ISO8859-1, para manter compatibilidade com os padrões brasileiros (diga-se Windows).
Bom, como no meu caso não me interessa muito esta compatibilidade, e posso o usar o Kwrite para salvar algum arquivo em ISO8859, caso necessite, resolvi unificar a codificação do meu Kurumin em UTF-8 que é o padrão da maioria das distros Linux da atualidade.

Se você também acha que vale a pena fazer esta alteração, a receita não é complicada:

1º mude o locale, como root use o comando:
localedef -i pt_BR -f UTF-8 pt_BR.utf8

2º altere o arquivo /etc/environment
ficando assim:
LC_ALL=pt_BR.UTF-8
LANGUAGE=pt_BR.UTF-8
LC_MESSAGES=pt_BR.UTF-8
GTK_IM_MODULE=xim

LANG=pt_BR.UTF-8

reinicie o servidor gráfico (pode ser com um CTRL+ALT+Backspace) e seu sistema está em UTF-8.

3º Arrume os arquivos antigos
Agora é preciso renomear os arquivos antigos que eram acentuados ou tinham cedilha, pois o UTF-8 não reconhece a acentuação ISO8859-1.
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

# 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



Bom, é tudo.
Espero que este texto possa ajudar.

4 comentários:

Anônimo disse...

Ótima dica, estava tentando utilizar o dpkg-reconfigure locales, que não tinha dado certo!

Claudio disse...

Valeu a dica. Estava com problemas de backup entre uma máquina Fedora e outra Kurumin com rsync via ssh. Agora acentos no seu devido lugar!

FranciscoLima disse...

Fico muito contente em ver que esta dica foi útil para você.
Em breve vou publicar alguns outros scripts que estão me ajudando e dar uma melhorada nos acima.

Rudolf disse...

Obrigado!

Funcionou no Debian.