Por muito tempo tive dor de cabeça com a codificação do Arch Linux.
Codificação nada mais é que o conjunto de caracteres habilitados no seu sistema operacional, por exemplo: UTF-8, ISO-8859-1.
O default do Arch e se não me engano da maioria dos sistemas Unix é UTF-8, porém o Windows trabalha com ISO-8859-1 (Até onde eu sei).
Então como meu Arch trabalhava em uma codificação diferente, quando eu recebia arquivos vindos do Windows com acentos, os mesmos sumiam e davam lugar a um <?> muito estranho, dizendo que o Arch não sabia que caractere era aquele. Caso eu mudasse meu sistema para ISO-8859-1 este problema aconteceria com arquivos vindos de outras máquinas Linux.
Ruim não é.
Pois é.
Explicarei o pouco que pesquisei sobre a forma que a codificação é configurada no Arch Linux.
Em /etc/ existe um arquivo chamado locale.gen (você pode altera-lo na instalação do Arch ou depois de instalado).
Este arquivo locale.gen lista todas as codificações conhecidas, perceba que a maioria está comentada (#), isto é não está habilitada. As codificações descomentadas representam codificações que o seu sistema suporta-rá.
Portanto, procure pela string (pt_BR), estou imaginando que você fale português do Brasil, caso seja do Uzbequistão ou outro procure a codificação correspondente a seu idioma.
No meu caso eu descomentei as strings:
pt_BR.UTF-8 UTF-8
pt_BR ISO-8859-1
Salve e feche o arquivo.
Agora, antes de continuar é necessário gerar os locales que você descomentou, faça isso com o comando
locale-gen
Agora que os locales estão gerados não significa que seu sistema compreende os caracteres que você descomentou, a coisa continua no arquivo /etc/rc.conf.
Abra-o.
Na instalação do Arch Linux, na parte de configuração do rc.conf, a maioria dos tutoriais pede para você configurar este bloco de código desta forma:
LOCALE=”pt_BR.utf8″
HARDWARECLOCK=”localtime”
USEDIRECTISA=”no”
TIMEZONE=”America/Sao_Paulo”
KEYMAP=”br-abnt2″
CONSOLEFONT=
CONSOLEMAP=
USECOLOR=”yes”
Porém assim você está dizendo para o seu sistema suportar apenas a codificação “pt_BR.utf8″.
Resumindo, não importa quais locales estão descomentados no seu locale.gen se o seu rc.conf está configurado apenas para uma (UTF-8).
Portanto o que você deve fazer para que seu sistema suporte as duas codificações brasileiras (pt_BR.UTF-8 e pt_BR ISO-8859-1) é alterar a linha locale para:
LOCALE=”pt_BR”
Logo:
LOCALE=”pt_BR”
HARDWARECLOCK=”localtime”
USEDIRECTISA=”no”
TIMEZONE=”America/Sao_Paulo”
KEYMAP=”br-abnt2″
CONSOLEFONT=
CONSOLEMAP=
USECOLOR=”yes”
Pronto, reinicie a máquina e seu sistema estará suportanto as duas codificações simultaneamente.
Sei que o post trata de um assunto meio besta porém eu fiquei um bom tempo com aqueles <?> vindos do Windows.
Obrigado a todos
Tags: , caractere, codificação, codificações, interrogação, inválido, iso-8859-1, Linux, problema, utl-8, windows
Janeiro 14, 2009 às 13:25
Acabo de Perceber que cometi um equívoco neste artigo, minha primeira impressão é que o Arch havia suportado as duas codificações, porém percebi que ele somente alterou sua codificação para ISO-8859-1 e não suporta mais UTF-8.
De qualquer forma, mantenho o artigo para que os novos possam entender melhor a forma que o Arch faz as ligações das codificações.
Peço desculpas pelo erro.
Março 9, 2009 às 5:31
Pobre Computeiro.
Março 9, 2009 às 8:10
Hehe, Pobre mesmo rs…