terça-feira, 12 de abril de 2005

Visualizando corretamente os acentos em arquivos de partições FAT32 no Linux

Você já deve ter percebido que não é apresentado corretamente na maioria dos casos os caracteres especiais dos nomes de arquivos usando o Fat32 (vFat) no Linux, isto ocorre porque as paginas de códigos, charsets ou ambos devem ser configuradas manualmente sendo que o foco principal, claro, é o inglês. Reparei que é escassa alguma documentação sobre o assunto, o que me levou a dar uma lida nos documentos do vFat do kernel, afim de achar opções de montagem, e vou passar a receita do bolo para vocês :-)

Basicamente para montagem do Fat32 devem ser adicionar as opções "iocharset" e/ou "codepage" ao que parece isto depende por onde a formatação foi feita, se através de um sistema operacional em português da familia Microsoft a opção a ser adicionada deve ser "codepage=850" se inglês "iocharset=iso8859-1". É uma deficiência do vFat do Linux não extrair esta informação automaticamente da partição, isto ainda não desmerece este módulo já bem desenvolvido.

:. Exemplos

Importante: Desmonte primeiro a partição usando o comando "umount /dev/hda1" (sendo /dev/hda1 sua partição)

Se sua partição foi formata através de um SO em inglês
$ mount -t vfat /dev/hda1 /mnt/win -o codepage=850

Se sua partição foi formata através de um SO em português
$ mount -t vfat /dev/hda1 /mnt/win -o iocharset=iso8859-1

Naturalmente o /dev/hda1 é uma partição Fat32 (que deve estar desmontada) e o /mnt/win é o diretório destino. Basicamente é isto, se você esquecer por onde foi formatado, ou os caracteres ainda aparecerem errados você deve ir testando mesmo, primeiramente usando os exemplos acima, depois apelando para os abaixo :-) alternando as opções ou ainda as combinando. Lembre que para verificar se esta tudo correto recomendo usar uma aplicação gráfica como o Konqueror, Nautilus ou qualquer outro Filemanager.

:. Mais exemplos:

Usando charset iso8859-1 com codepage 850
$ mount -t vfat /dev/hda1 /mnt/win -o iocharset=iso8859-1,codepage=850

Usando charset UTF8
$ mount -t vfat /dev/hda1 /mnt/win -o iocharset=utf8

Usando charset UTF8 com codepage 850
$ mount -t vfat /dev/hda1 /mnt/win -o iocharset=utf8,codepage=850

Se o seu SO for inglês ou português só esta codepage/charset devem ser usandos se for outra língua procure saber qual é seu charset e o codepage e os use como os do exemplo. Não se esqueça que tem que estar compilado no kernel como nativo ou módulo o charset e o codepage que forem ser usados.

:. Automatizando o Processo:

Para automatizar o processo de montagem das partições Fat32 deve ser adicionada no /etc/fstab (se existir altere apenas).


# Partição Destino Tipo Opçoes
/dev/hda3 /mnt/dados vfat iocharset=iso8859-1 1 0

Divirta-se com seus caracteres especiais :-)

Nota: Esta excelente dica feita pelo usuário Nawtage foi retirada do site Guia do Hardware



Site Meter