Problemas com codificação de caracteres em Linux


Fedora Core 5

Autor: Bruno Brandoli Machado
Data: 27/09/2006

O problema de codificação ocorre pela incompatibilidade na representação de caracteres, e para percebê-lo, verifique se os acentos do texto desta dica estão representados corretamente. A codificação de caracteres é definida para uma região ou país, no caso do Brasil, existem dois tipos padrões de codificação de caracter em se tratando de Linux: um deles é o UTF-8 e o outro o ISO-8859-1. Por default algumas distros Linux instalam a codificação UTF-8, no entanto, por convenção os fontes dos projetos do Grupo de Pesquisa em Engenharia e Computação (GPEC) estão escritos em padrão ISO e ao processá-los poderá ocorrer este problema. Para modificar a codificação para ISO realizei os passos:

 $ abri um shell 							//terminal
 $ su   	 							//tornei-me superusuário
 # vi /etc/sysconfig/i18n						//editei o arquivo configurando a codificação ISO
 LANG="pt_BR.ISO-8859-1"
 SYSFONT="latarcyrheb-sun16"
 # exit 								//voltei a ser um usuário comum
 # exit 								//fechei o terminal e o abri novamente



Autor: Bruno Cesar G. Toledo
Data: 14/11/2006

PROBLEMA:

Se mesmo utilizando este processo não obtiver êxito, tente os seguintes procedimentos:

 $ Entre na $HOME
 $ Abra o arquivo .dmrc com qualquer editor de texto.
 $ Troque a linha "Language=pt_BR.UTF-8" por "Language=pt_BR.ISO-8859-1"



Autor: Thiago Moreto
Data: 20/03/2007

1. Caso você queira apenas modificar a codificação de um arquivo existente, que por exemplo, esteja em codificação UTF-8, utilize o comando iconv.

 $ iconv -f UTF-8 -t ISO-8859-1 arquivo_em_utf8.txt > novo_arquivo_em_latin1.txt

O comando iconv suporta várias conversões, para mais informações de como utilizar, use "$ man iconv".

2. E se você apenas queira saber a codificação do arquivo, faça:

 $ file arquivo.txt

3. Uma outra situação é utilizar uma máquina que possua codificação UTF-8 e deseja-se editar um arquivo que está em ISO-8859-1 sem alterar a codificação padrão da máquina, para isso faça o seguinte:

 $ LC_ALL=pt_BR.ISO-8859-1 vi nome_do_arquivo.txt
 (claro, se você não gostar do Vi, utilize qualquer outro, vai funcionar)

4. Para manter a modificação por toda a sessão (e apenas a sessão).

 $ export LC_ALL=pt_BR.ISO-8859-1
 $ vi arquivo.txt

Ubuntu

Mudar de UTF-8 para ISO.8859-1
Autor: Breno de Paula Fernandes
Data: 2/5/2007

Alterado por Hemerson Pistori (relato de problema e alerta)
Data: 3/5/2007

Alterado por Bruno Brandoli Machado
Data: 25/1/2008

1) Crie uma cópia do arquivo /etc/environment

 sudo cp /etc/environment /etc/environment.orig

2) Em seguida abra-o e altera apenas as duas últimas linhas:

 sudo <editorpreferido> /etc/environment
 PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11:/usr/games"
 LANG="pt_BR.ISO-8859-1"
 LANGUAGE="pt_BR"

3) Vá em /var/lib/locales/supported.d/

 3.1) Crie uma cópia do arquivo local
    sudo cp local local.orig
 3.2) Abra o arquivo local e insira:
    sudo <editorpreferido> local		
    pt_BR.ISO-8859-1 ISO-8859-1

4) Agora digite na linha de comando como root:

 sudo locale-gen

Caso apareça mais codificações de outros países basta comentar tudo todas as linhas do arquivos utilizando #: en e pt. Em seguida digite novamente:

 sudo locale-gen

O resultado dos locales deve ser somente a codificação ISO, como mostra.

 Generating locales...
 pt_BR.ISO-8859-1... up-to-date
 Generation complete.

5) Pronto!! Agora é só reiniciar a máquina.

6) Resolvendo problema com o gedit (que mesmo depois dos passos acima continua codificando em UTF-8).

...colocar solução aqui...

7) Para testar crie um diretório com acento.


Ubuntu 7.04

Modificando a codificação do Ubuntu 7.04 (Feisty Fawn) de UTF-8 para ISO-8859-1 em Notebook HP, modelo Pavilion dv6000, teclado disposição U.S English
Autor: Bruno Brandoli Machado
Data: 28/02/08

O primeiro passo é escolher a disposição correta do teclado no momento da instalação, testando principalmente as teclas de carecteres especiais. Para o teclado U.S English o Ubuntu oferece várias opções, caso a disposição das teclas for configurada errada na instalação, é possível modificar a codificação do sistema operacional, aparecendo até mesmo nos editores de texto a mudança, como kwrite e gedit, mas ao utilizar estas aplicações para digitação de textos, ocorrerá o problema de codificação ('e, ~a). Assumindo que a disposiçao do teclado esteja correta, realizei os seguintes passos.

1. Verifiquei se os pacotes de língua portuguesa estavam instalados. Caso não estejam instale-os com apt.

  • language-pack-pt
  • language-pack-pt-base
 $ sudo apt-get install language-pack-pt language-pack-pt-base

IMPORTANTE: Antes de seguir para os próximos passos é importante ressaltar que ao reconfigurar a codificação com o comando locale-gen, o sistema varre todos os arquivos dentro do diretório /var/lib/locales/supported.d/, incluindo backups, por isso caso queira fazer um backup para segurança copie-os para outro diretório.

2. Editei o arquivo /var/lib/locales/supported.d/local e adicionei a seguinte linha.

 pt_BR.ISO-8859-1 ISO-8859-1

Antes estava assim:

 pt_BR.UTF-8 UTF-8
 en_US.UTF-8 UTF-8

No diretório /var/lib/locales/supported.d/ possui três arquivos de configuração, são eles: local, en, pt. Depois de ter modificado o arquivo local, comentei com # todas as linhas dos arquivos en e pt. Em alguns tutoriais é relatado para excluí-los, mas comentando o resultado é o mesmo.

3. Editei o arquivo /etc/locale.alias adicionando a seguinte linha, e só coloquei próximo ao portuguese para ficar mais organizado.

 pt_BR      pt_BR.ISO-8859-1

4. Editei o arquivo /etc/environment alterando o parâmetro LANG.

 PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"
 LANG="pt_BR.ISO-8859-1"
 LANGUAGE="pt_BR:pt:en"

Antes estava assim:

 PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"
 LANG="pt_BR.UTF-8"
 LANGUAGE="pt_BR:pt:en"

5. Editei o arquivo /etc/default/locale alterando somente o parâmetro LANG novamente.

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

Antes estava assim:

 LANG="pt_BR.UTF-8"
 LANGUAGE="pt_BR:pt:en"

6. Associei o nome pt_BR à diretiva de linguagem pt_BR.ISO-8859-1 executando o seguinte comando.

 $ sudo localedef -i pt_BR -c -f ISO-8859-1 pt_BR

7. Atualizei os locales com o comando:

 $ sudo dpkg-reconfigure locales
       ou
 $ sudo locale-gen

O resultado foi:

 Generating locales...
   pt_BR.ISO-8859-1... up-to-date
 Generation complete.

8. Para ativar imediatamente as novas configurações no ambiente gráfico reiniciei o X com [Ctrl] + [Alt] + [Backspace]

9. Para verificar se houve mudança na codificação abra o kwrite e peça para abrir um arquivo com [Crtl + O (aqui é letra ó de Open)] e veja ao lado superior direito se a codificação padrão é a ISO-8859-1, ou crie um arquivo e veja a sua codificação com o comando file.

10. O gedit ainda continuou codificando em UTF-8.

R: Pela net, parece ser um bug existente no gnome a partir do Ubuntu 6.06 Dapper Draker.