você está aqui: Home  → Arquivo de Mensagens

Convertendo arquivos-texto de ISO8859 para UTF-8 e vice-versa

Colaboração: Juan Carlos Castro y Castro

Data de Publicação: 28 de Abril de 2005

A maioria das distribuições GNU/Linux, em suas versões mais modernas, mudou para o padrão Unicode na representação de texto. Nesse padrão, caracteres acentuados e especiais são representados por mais de um byte. Você pode ver a diferença digitando o seguinte comando numa janela de terminal:

  echo -n ç|wc -c

Se a resposta for 1, seu sistema ainda usa a codificação antiga (ISO8859, a mesma do Windows). Se for 2, ele usa a nova.

Os scripts Perl abaixo fazem a conversão do conteúdo de um arquivo texto de um padrão para o outro. Eles funcionam exclusivamente como filtro, ou seja, você tem que "pipear" os dados através deles, assim:

  iso2utf8 <arquivo-criado-no-windows.txt >arquivo-com-acentos-corrigidos.txt

Ou:

  man comando | col -b | utf82iso >arquivo-a-ser-lido-no-debian.txt

Os scripts em si são de uma simplicidade atroz:

  #!/usr/bin/perl
  #
  # iso2utf8 - Converte texto de ISO8859 para UTF-8
  #
  use Encode;
  
  while(<STDIN>){
     print encode("utf8", decode("iso-8859-1", $_));
  }
  
  #!/usr/bin/perl
  #
  # utf82iso - Converte texto de UTF-8 para ISO8859
  #
  
  use Encode;
  
  while(<STDIN>){
     print encode("iso-8859-1", decode("utf8", $_));
  }


 

 

Veja a relação completa dos artigos de Juan Carlos Castro y Castro

Opinião dos Leitores

Seja o primeiro a comentar este artigo
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script