Introdução
A cada dia novas distribuições são lançadas, e muitas vezes cada uma com uma codificação diferente.
Quando comecei a trabalhar com Linux usava Conectiva 10, passei para Slackware, Debian, Ubuntu e Kubuntu. Hoje ainda utilizo Debian Sarge em meus servidores e Kubuntu 7.10 no desktop.
Por padrão, as distribuições novas estão vindo com a codificação UTF-8, mas antes não havia um padrão e muitas eram ISO-8859-1, que no caso, as citadas acima, apenas Ubuntu e Kubuntu eram UTF-8.
Ao utilizar o Kubuntu me deparei com o problema dos caracteres estranhos, isso ocorreu pela incompatibilidade entre as codificações, mas passar o Kubuntu para ISO, a princípio, não foi uma tarefa tão simples.
Acredito que ganhei certa experiência nesta peleja e quero passar para outras pessoas este conhecimento, de como mudar a codificação do Kubuntu (Ubuntu, Xubuntu, Edubuntu…) para ISO-8859-1 e igualar a codificação dos arquivos e diretórios.
Mãos-a-Obra
Todas as configurações e comandos foram executados como usuário root.
Existem vários arquivos que fazem a configuração do locale, precisamos configurar todos eles e depois executar alguns comandos, vamos lá.
Edite o arquivo /etc/environment e altere os campos LANG e LANGUAGE de forma que fiquem iguais ao abaixo, se não existir, acrescente:
LANG="pt_BR"
LANGUAGE="pt_BR:pt:en"
O arquivo /etc/default/locale também deve ser editado e seu conteúdo deve ser:
LANG="pt_BR"
LANGUAGE="pt_BR:pt:en"
Execute o seguinte comando:
# echo "pt_BR pt_BR.ISO-8859-1" >> /etc/locale.alias
Este arquivo grava os aliases para os locales, isso é para facilitar as configurações.
No diretório /var/lib/locales/supported.d alguns arquivos que configuram os locales que serão gerados, por padrão existem três arquivos “en”, “pt” e “local”. Para nosso caso, pode apagar o “en” e o “pt” deixando apenas o “local”.
Feito isso, edite o arquivo local e deixe seu conteúdo como abaixo:
pt_BR.ISO-8859-1 ISO-8859-1
en_US.ISO-8859-1 ISO-8859-1
Muito bem, configuramos os arquivos necessários para a geração dos locales, agora vamos reconfigurar.
Os comandos abaixo fazem o serviço:
# localedef pt_BR -i pt_BR -f ISO-8859-1
# localedef pt_BR.ISO-8859-1 -i pt_BR -f ISO-8859-1
# localedef pt_BR.ISO8859-1 -i pt_BR -f ISO-8859-1
# dpkg-reconfigure locales
# locale-gen --purge
# locale-gen
Acredito que apenas um desses três comandos fariam o serviço, mas como eu executei os três quando estava configurando o sistema não vou tirar algum deles, é melhor executar a mais e funcionar do que executar a menos e não funcionar.
Reinicie o sistema e execute o comando abaixo para termos certeza que está tudo conforme o desejado.
# locale
LANG=pt_BR
LANGUAGE=pt_BR:pt:en
LC_CTYPE="pt_BR"
LC_NUMERIC="pt_BR"
LC_TIME="pt_BR"
LC_COLLATE="pt_BR"
LC_MONETARY="pt_BR"
LC_MESSAGES="pt_BR"
LC_PAPER="pt_BR"
LC_NAME="pt_BR"
LC_ADDRESS="pt_BR"
LC_TELEPHONE="pt_BR"
LC_MEASUREMENT="pt_BR"
LC_IDENTIFICATION="pt_BR"
LC_ALL=
# locale -a
C
en_US.iso88591
POSIX
pt_BR.iso88591
Agora sim, está tudo como deveria estar. Nosso sistema já está usando ISO-8859-1.
Configurando os arquivos e diretórios
Pode ocorrer de serem criados arquivos e diretórios com o locale direrente, assim, quando alteramos para ISO alguns ficaram em UTF, para isso usaremos o comando convmv.
Instalamos o comando pela ferramenta padrão do Debian, apt.
# apt-get install convmv
Entre no diretório que deseja fazer a alteração e execute os comando abaixo:
Primeiro vamos recodificar os diretórios, o parâmetro “-type” do comando find se encarregará disso, “d” para diretórios e “f” para arquivos (files).
# find . -type d -print0 | xargs -0 -i% convmv -f UTF-8 -t ISO-8859-1 %
A saída do comando é como ficarão os diretórios, se você reparar, após executar o comando, os diretórios continuam da mesma forma, o comando acima é apenas um teste, para executar permanentemente use a flag “–notest”.
# find . -type d -print0 | xargs -0 -i% convmv -f UTF-8 -t ISO-8859-1 % --notest
Para os arquivos o mesmo comando, alterando apenas de “d” para “f”.
Recodificando arquivos
O comando para recodificarmos arquivos é o “recode”.
# apt-get install recode
Temos um arquivo na codificação UTF-8, para assegurar-se disso execute:
$ file arquivo.txt
arquivo.txt: UTF-8 Unicode text
Para recodificarmos um arquivo texto de UTF-8 para ISO-8859-1 procederemos da seguinte forma:
$ recode -v UTF-8..ISO-8859-1 arquivo.txt
Requisição: UTF-8..:libiconv:..ISO-8859-1
Encolhido para: UTF-8..ISO-8859-1
Recodificando arquivo.txt... feito
Agora vamos verificar se o arquivo foi recodificado:
$ file arquivo.txt
arquivo.txt: ISO-8859-1 text
Atenção: Fiz esta conversão apenas para um arquivo texto, então é melhor ter cuidado na hora de recodificar, primeiro verifique qual a codificação, pois se a original for diferente de UTF-8 o comando precisará ser mudado.
Configurando o console
Quando usamos a interface gráfica o emulador de terminal não tem problema algum, mas quando estamos no console mesmo temos um grande problema.
Aqui uso teclado padrão americano, que é sem “ç”.
Para isso precisaremos instalar os pacotes abaixo:
# apt-get install console-data console-setup console-common
Feito isso selecione seu teclado através do comando:
# dpkg-reconfigure console-data
Depois use o comando:
# dpkg-reconfigure console-setup
Pronto, se tudo correu bem seu console está configurado como ISO-8859-1 e pronto para uso.
Qualquer dúvida pode entrar em contato pelo endereço lucianogf at underlinux.com.br
valeu
[]’s
Olá,
Fiz tudo, conforme o tutorial, e apareceu o seguinte erro;
locale -a
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_COLLATE to default locale: No such file or directory
C
POSIX
en_US.iso88591
pt_BR.iso88591
O que posso fazer pra resolver esse problema???
Já procurei na net mas nada….
Olá Wagner,
Esqueci de citar a configuração de um arquivo, o /etc/default/locale, o conteúdo dele deve ser
LANG=”pt_BR”
LANGUAGE=”pt_BR:pt:en”
após isso execute novamente os comandos para gerar os locales.
(Estes parâmetros já foram adicionados ao artigo)
Olá Wagner !
Parabéns pelo seu tutorial.
Eu utilizo o Debian, e acredito que nas derivações dele sejam parecidas.
Configurar o locales para o padrão ISO-8859-1, eu utilizo o comando dpkg-reconfigure locales.
Seleciono a opção pt_BR ISO-8859-1 e pesso para ativa-la.
Assim os acentos funcionam sem problema.
Bom espero ter ajudado.
Valeu.
Fala rodrigo,
O problema que no Kubuntu esse comando não resolveu…
ae foi necessário toda essa manobra..
cara quando eu executo o comando locale -a ta saindo diferente do seu e axo q num ta mudando nda o q pod ser?
locale -a
C
en_US.iso88591
en_US.utf8
POSIX
pt_BR.iso88591
pt_BR.utf8
cara…
você seguiu todos os passos sem pular nada???
é possível que você tenha pulado o “locale-gen –purge”
valeu
Oi,
Ao usar o comando do find vem a mensagem de retorno :
root@desktop:~# find . -type d -print0 | xargs -0 -i% convmv % –notest
wrong/unknown \
Olá, aqui estou com o mesmo problema do Luís Fernando, só que uso o ubuntu 7.10 e quando crio um arquivo via desktop com acentuação aparece desconfigurado no terminal mais se crio no terminal aparece ok no desktop.
Belo artigo….eu usei e funcionou perfeitamente!
Também estou com o mesmo problema do Rodrigo e do Zeze… alguem conseguiu solucionar o problema?
Caraaaaaa,
tava quase “jogando a toalha” quando achei teu artigo,
fiz umas modificaçõezinhas para os arquivos de configuração do debian e funcionou perfeitamente.
vlwwwwww
[]s
Cara, ferrou tudo. Estou com os mesmos problemas citados acima… Q q eu faço? Como volto ao UTF-8? Antes eu não tinha problemas com o terminal e agora eu tenho…
Olá Luciano. Meu nome é Fábio. Sou relativamente novo no mundo Linux, mas já posso dizer que sou um apaixonado. Tenho um Ubuntu Studio 7.10 Gutsy Gibbon e segui seu tutorial”Configurando codificação (locale) ISO-8859-1 no Kubuntu 7.10 Gutsy Gibbon” presente na URL http://under-linux.org/7954-configurando-locale-iso-8859-1-no-kubunt-710-gutsy-gibbon.html#comment-30851
Me deparei com alguns problemas:
1-Quando eu executo o comando locale -a:
locale -a
C
en_US.iso88591
en_US.utf8
POSIX
pt_BR.iso88591
pt_BR.utf8
2-Ao usar o comando do find vem a mensagem de retorno :
root@desktop:~# find . -type d -print0 | xargs -0 -i% convmv % –notest
wrong/unknown \
3-As pastas ficaram “esquisitas” no terminal. Por exemplo o arquivo “Agenda.txt” aparece como “Agenda~” e não consigo mais modificar as permissõs do memo pelo Desktop. Pasta do tipo: “Arquivos Ubuntu” estão aparecendo como “Arquivos \ Ubuntu”
Percebi que vários ouros usuários estão tendo o mesmo problema. Será que é porque vc criou o tutorial par Kubuntu e no Ubuntu tem alguns detalhes que deveriam ser diferentes???
Se for o caso, como volto à estaca zero, ou seja, como volto a ter o UTF-8??? Não lembro mais as linhas originais ds arquivos modificados…
Agradeço antecipadamente a atenção dispensada.
Fábio Vicente Leite
pessoal..
não tinha respondido ainda porque não estou recebendo as notificações de comentários aqui..
fiz uma alteração na linha referente ao convmv, vejam que a primeira faz apenas um teste, e se tudo correr bem é que deve-se colocar o “–notest”, mas quem vê se vai correr tudo bem ou não é quem está executando o comando e não o computador!!!
Olá Luciano!!! Essa correção foi tiro e queda!!! Maravilha!!! Mas ainda estou com o problema do terminal
Pastas com “espaço” estão sendo reconhecidas como “\ ” e no final de alguns arquivos aparecem acento “~”… Antes de eu seguir este tutorial, não tinha este problema. O que será???
Gde abraço!!!
Fábio