Reconfigurar as "LOCALES" passando de UTF-8 para ISO-8859-1

Publicado por Mister Hend Inc. em 16/05/2009

[ Hits: 70.469 ]

 


Reconfigurar as "LOCALES" passando de UTF-8 para ISO-8859-1



Hoje em dia as distribuições estão vindo por padrão com a codificação UTF-8 ao invés de ISO-8859-1 (esta última, padrão do Windows).

O grande problema de manter estas configurações é que os arquivos "herdados" de sistemas como o Windows (fotos, músicas, pastas) que estejam acentuados ou contenham "Ç" (cedilha) deixam de ser exibidos corretamente e, em alguns casos (como no do Kubuntu Linux), o problema ainda se agrava, pois os arquivos não podem ser manipulados por terem nomes inconsistentes e também não podem ser renomeados.

Bootar um live CD do Ubuntu às vezes é uma opção, pois ele consegue manipular estes arquivos mesmo que não consiga exibir os caracteres corretamente. Porém, caso o usuário tenha muitos arquivos e pastas para renomear, este procedimento torna-se algo muito árduo para o qual segue uma possível solução.

Primeiramente gostaria de ressaltar que todos os comandos foram executados com o usuário root e só assim funcionarão.

Existem vários arquivos que fazem a configuração do locales; precisaremos configurar todos eles e depois executar alguns comandos. Então, mãos à obra!

1 - Edite o arquivo /etc/environment e altere os campos LANG e LANGUAGE de forma que fiquem iguais ao exemplo abaixo (caso não existam estas linhas, acrescente-as):

LANG="pt_BR"
LANGUAGE="pt_BR:pt:en"

2 - Edite também o arquivo /etc/default/locale e altere os campos LANG e LANGUAGE de forma que fiquem iguais ao exemplo abaixo (caso não existam estas linhas, acrescente-as):

LANG="pt_BR"
LANGUAGE="pt_BR:pt:en"

3 - Agora vamos executar um comando que copia os "alias" para os "locales", facilitando a configuração:

echo "pt_BR pt_BR.ISO-8859-1" >> /etc/locale.alias

4 - No diretório /var/lib/locales/supported.d existem alguns arquivos que configuram os locales; por padrão existem três arquivos: "en", "pt" e "local". Neste caso, podemos 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

5 - Perfeito. Criamos os arquivos necessários para a geração das "locales"; agora vamos reconfigurá-las utilizando os comandos abaixo:

# 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


Obs.: Estão sobrando alguns comandos, mas é pra garantir que o procedimento funcionará em todas as distros.

6 - Ótimo. Agora, basta reinicializar o sistema e este já deve estar operando com a codificação ISO-8859-1. Entretanto, para conferir, vamos rodar mais alguns comandos (lembrando que estes só após reiniciar o sistema):

# 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

Podem surgir mensagens de erro referentes ao comando POSIX, mas isto não irá interferir na configuração.

7 - Concluído. Agora o sistema já está operando como ISO-8859-1. Algumas pastas padrão do Linux acentuadas irão apresentar problemas na exibição de seu nomes, mas agora é possível renomeá-las, então basta fazer isto para que tudo fique ok.

Espero que gostem da dica.

Abraços.

Outras dicas deste autor

Wiithon - WBFS Manager para Linux

Gnome/KDE: Sistema não loga ou efetua logoff em 10 segundos (ERRO no .ICEauthority)

Configurando Kmail para usar conta do Gmail

Entenda como funciona o controle de restrições no Linux

Remover arquivos falsos no Linux (impossíveis de remover)

Leitura recomendada

Instalando o Eterm sem problemas no Slackware 10

Upgrade no KDE: "Call to lnusertemp failed (temporary directories full?). Check your installation"

Instalando phpMyAdmin no CentOS 6

Impressora HP 820c no Debian Lenny

Touchpad HP 530 no Debian 8 LXDE

  

Comentários
[1] Comentário enviado por c1e6er em 16/05/2009 - 10:01h

Este é um dos problemas mais 'chatos' para quem utiliza o dual boot, ou seja, tem o Linux e o win no mesmo HD
Toda vez que se acessa o win ele altera toda a codificação dos arquivos compartilhados, ficando aquela zona de caracteres doidos.
Uma tremenda chateação corrigir tudo no Linux.
Parabéns... é uma grande ajuda.

Agora, fiquei com uma dúvida:

Qual o problema com a ISO 8869-1 no Linux?

Por que o Linux passou a adotar a UTF-8 ao invés de padronizar com a 8859-1?

[2] Comentário enviado por eldermarco em 16/05/2009 - 11:29h

Rapaz, talvez fosse problema parecido que me deu dor de cabeça quando o Amarok não queria tocar os arquivos que eu baixava do Jamendo. Era algum problema com o nome deles, mas nunca consegui resolver.. :(

Só com o Amarok 2 é que isso foi resolvido, mas agora não gosto dele :-)

[]'s

[3] Comentário enviado por pablomics em 16/05/2009 - 19:18h

Uso o kubuntu em dualboot com WinXP há 3 anos e nunca tive problema com locales. Meus arquivos com caracteres acentuados nunca ficaram ilegíveis ou corrompidos nos programas que uso. O Windows grava em iso-8859-1 mas também lê UTF-8, e o kubuntu lê e grava em todos os padrões que você desejar (e escolher). Com arquivos de texto puro (txt, html, css, js, srt) eu tenho que configurar a codificação no kate/kwrite antes de abrí-lo, ou dar uma convertida com o iconv para as legendas srt serem lidas em players que não suportam múltiplas codificações.

[4] Comentário enviado por mhi7seven em 16/05/2009 - 20:13h

Bem, respondendo ao primeiro comentário. o UTF na verdade também é o padrão adotado pela Aple nos Mac's. .A substituição do iso pelo utf no linux, parece-me dever ao caso de q este isu eh meio q "proprietário" da MS.

ao segundo coment: Com ctz resolveria ;)

e ao terceiro: Bem. no meu caso as coisas não funcionavam assim, salvando em UTF no linux o win n acentua os arquivos + abre-os, o procedimento inverso nunca funcionou.

[5] Comentário enviado por /bin/laden em 17/05/2009 - 17:22h

Por que o Linux passou a adotar a UTF-8 ao invés de padronizar com a 8859-1?

Resposta: O grupo reponsável pelo desenvolvimento/manutenção do padrão iso, não dará mais suporte a esta codificação, concentrando-se no padrão Unicode (utf), que é bem mais completo e abrangente às línguas do mundo.

[6] Comentário enviado por axpira em 13/08/2009 - 23:50h

Excelente dica, agora os programas voltaram a acentuar normalmente!!!

Obrigado

[7] Comentário enviado por zandao em 23/09/2009 - 17:27h

Respondendo à dúvida dos comentários [1] e [4]:

O utf-8 é o padrão atual, seja para Linux, *BSD, Mac OS X, celulares, setop boxes e, principalmente, WINDOWS. O Windows já suportava utf-8 (porcamente) desde a versão NT. O UTF-8 passou a ser adequadamente suportado no Windows XP, mas somente no Vista ele passou a ser o padrão. Por questão de compatibilidade, nenhum arquivo ou sistema de arquivo é "recodificado" quando você instala uma versão nova do Windows ou do Linux ou do MacOS X, mas se comprar uma máquina nova, com a última versão de seu sistema operacional preferido, ele vai utilizar UTF-8.

Mas ainda tem um problema: muitos aplicativos ainda não foram refeitos para suportar o padrão, por isso ainda vai encontrar muitos programas que só reconhecem o ASCII padrão em sua code-page mais utilizada, a ISO-8859-1, em outros casos (Windows) os utilitários padrão vão ler OK, mas vão tentar sempre que possível salvar usando o ISO-8859-1...

[8] Comentário enviado por scherer89 em 13/12/2009 - 17:54h

Muito boa dica. Precisei instalar o postgres com a condificação LATIN1 no Kubuntu e isso ajudou muito. Obrigado.

[9] Comentário enviado por lucianogf em 03/08/2010 - 00:02h

Você poderia ter, ao menos, colocado de onde você tirou isso.

EU fiz uma pesquisa e, com base no que li e estudei, montei e postei este artigo no Under-Linux. Você simplesmente copiou e colou!

Nos próximos artigos que você for copiar coloque de onde tirou e quem o criou.

Luciano

[10] Comentário enviado por Mamuga em 16/09/2010 - 17:25h

Perfeito Mr. Hend!!!
Resolveu meu problema de acesso à pastas criadas no Windows, e muito melhor do que ficar usando mvconv.
Obrigado!

[11] Comentário enviado por borgesbruno em 15/10/2010 - 14:28h

Excelente Post! Sempre resolve o meu problema quando preciso instalar o squirrel em alguma máquina.

Bruno Borges

[12] Comentário enviado por alexandremc em 05/04/2013 - 00:41h

Boa noite

Um colega aqui no trabalho roudou apenas o comando dpkg-reconfigure locales

Dessa forma deixo em pt-BR.ISO8859-1 na primeira tela e na segunda tela onde dizia nnehum ou PT-BR como nenhum.

Resultado o sitema não loga mais.

Tem como reparar?

Abraços

[13] Comentário enviado por ottolinux em 26/03/2015 - 20:42h


Ok, fiz quase tudo mas ainda n~ao funcionou, o item 4 nao consegui pois a distro que toh usando nao tem esse arquivo o /var/lib/locales/supported.d nao existe.
Bom , coloco aqui a saida do locale -a :
root@crunchbang:/etc# locale -a
C
C.UTF-8
POSIX
pt_BR
pt_BR.iso88591
--------------
d'a pra notar que h'a ainda um interferencia desse outro padrao ...
Preciso resolver isso por ainda tenho q fazer a minha declaracao de IRPF :-/ ...

Agradeco a ajuda ai ,
Ateh mais
Otto

[14] Comentário enviado por codgolivre em 28/03/2017 - 13:09h

funciona no debian 8...

[15] Comentário enviado por dsgdance em 25/05/2017 - 14:12h

Resolvi meu problema com locales no ubuntu 16.04, obrigado!!!!



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts