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.
