Tutorial: Convertendo arquivos UTF-8 em ISO-8859-1

Iniciado por gabriel0085, 19 de Outubro de 2007, 11:01

tópico anterior - próximo tópico

gabriel0085

Recentemente tive alguns problemas com codificação de alguns arquivos e do próprio sistema (algumas coisas ainda não resolvidas, mas isso é outro assunto!).

O fato é que tive que fazer uma pesquisa sobre como converter um tipo de arquivo em outro. O que me impressionou não foi a dificuldade de achar uma solução, mas a complexidade de algumas soluções que eu encontrei. Pensei que certamente tal complexidade não seria necessária e estava certo !

Encontrei uma dica no rodapé do site das FunçõesZZ ensinando justamente como converter o arquivo das FunçõesZZ, que é escrito em ISO-8859-1, em UTF-8.

O comando é muito simples: iconv
Faz parte da libc6, ou seja, todo mundo têm instalado, e possuí sintaxe simples.

iconv -f codificacao_de_origem -t codificacao_de_saida arquivo

Assim para converter UTF-8 para ISO-8859-1 temos:

iconv -f utf-8 -t iso-8859-1 arquivo

Para o contrário utilizamos:

iconv -f iso-8859-1 -t utf-8 arquivo

É necessário redirecionar a saida de arquivo para algum lugar, algo como:

iconv -f utf-8 -t iso-8859-1 arquivo > novo_arquivo

Sendo assim, eu acrescentei ao meu ~/.bashrc* as seguintes linhas

alias iso2utf='iconv -f iso-8859-1 -t utf-8'
alias utf2iso='iconv -f utf-8 -t iso-8859-1'

Agora quando eu quiser converter um tipo de arquivo em outro, eu só preciso usar o iso2utf ou o utf2iso

Agora, por que tanta desinformação sobre assunto ? É tão fácil converter um tipo em outro, é tão simples !

Script para fazer a conversão em lote (Marcelo Oliveira)

O script apresenta o cuidado de não modificar seus arquivos originais, produzindo uma cópia dos mesmos em outros diretórios. Modificar o comportamento do script para converter arquivo iso-8859 para utf-8 é trivial (pelo menos para quem leu o tópico até aqui). Um detalhe importante é que o script não suporta caminhos ou nomes que contenham espaços (Posso estar enganado, mas o Marcelo deve ter utilizado esse script em um diretório de dados para internet onde espaços não são comuns e arquivos de imagem são.).
Marcelo, eu e a galera agradecemos a iniciativa e a colaboração!

Citar#!/bin/bash

# 04/07/2007
# por Marcelo Oliveira - www.iboletim.com.br
# Licença de uso: GPL

# uso:
# utf2iso.sh diretorio-a-ser-convertido

# fecha se nao for fornecido nenhum argumento
if [ $# -eq 0 ]
then
echo "ERRO: especifique o nome da pasta com os arquivos a serem convertidos!"
echo "Uso: ./utf2iso.sh diretorio-a-ser-convertido"
exit 1

fi

# cria diretorio para armazenar arquivos convertidos
cp -R $1 iso-8859-1

# acessa diretorio com os arquivos a serem convertidos
cd $1

# cria lista de todos os arquivos que serao convertidos (estou excluindo .gif e .jpg)
lista=`find -type f | grep -v gif | grep -v jpg`

# executa conversao
for i in $lista
do
echo "convertendo... $i"
iconv -f utf-8 -t iso-8859-1 $i > ../iso-8859-1/$i;
#read; # para verificar as mensagens de erro
done

if [ $? == 0 ]
then
echo -e "\nConversao terminada com sucesso!\n"
fi


-------------------------------------

Autor do tutorial: J. F. Mitre

Fonte: http://jfmitre.blogspot.com/2006/05/convertendo-arquivos-utf-8-em-iso-8859.html#comment-5364607875807754020

jk

Olá, gostei da dica!
Mas tenho uma pergunta  mais simples.
Alguem conhece o comando que me mostre o tipo de codificação de um arquivo.

Panthovillas

desculpa o UP galera tive problema com a codificação e encontrei este topico

jk o comando para ver o tipo de codificação de um arquivo é o file -i nome_do_arquivo

Registered User #459883

jk

Olá Panthovillas,
eu tentei usar o camando file -i nome_do_arquivo mas ele não me mostrou o enconding correto.

alessandro_ufms

Também tem o comando recode que faz a mesma coisa.