jmfp6beQuem trabalha com frequencia com a linguagem de programação php e recebe ou encontra códigos fonte implementados por outros usuários, geralmente enfrenta um problema: a codificação dos caracteres.

Tendo este tipo de problema, criei 4 snippets simples para mudança de codificação dos arquivos em massa.

Os comandos unix básicos utilizados são o file e o comando iconv respectivamente com os seguintes argumentos file -i filename (que mostra algumas informações como o tipo de codificação do arquivo) e o comando iconv infile -f iso-8859-1 -t utf8 -o outfile.

Por que 4? Bom, pensando em uma lógica melhor, alguém pode criar um apenas e que faça todas as análises necessárias antes da ação, mas vamos lá:

  • Caso 01 – Em termos de codificação de caracteres [google](http://google.com) `charset` todos os arquivos são homogêneos, ou seja possuem a mesma codificação `charset=iso-8859-1` e deseja-se convertê-la para `charset=utf-8`:
for i in $(find -name \*.php);
do
    iconv $i -f iso-8859-1 -t utf-8 -o $i;
done
  • Caso 02 – Em termos de codificação de caracteres`charset` todos os arquivos são homogêneos, ou seja possuem a mesma codificação `charset=us-ascii` e deseja-se convertê-la codificação para `charset=utf-8` :
for i in $(find -name \*.php);
do
   iconv $i -f us-ascii -t utf-8 -o $i; 
done
  • Caso 03 – Em termos de codificação de caracteres`charset`  os arquivos **não são** homogêneos, ou seja uns possuem a mesma codificação `charset=iso-8859-1` e outros não e deseja-se converter a codificação para `charset=utf-8` :
for i in $(ls)
do
    file -i $i | grep 'iso-8859-1' >> /dev/null

    if [ $? -eq 0 ]
        then
        iconv $i -f iso-8859-1 -t utf8 -o $i;
    fi
done
  • Caso 04 – Em termos de codificação de caracteres`charset`  os arquivos não são homogêneos, ou seja uns possuem a mesma codificação `charset=us-ascii` e outros não e deseja-se converter a codificação para `charset=utf-8` :
for i in $(ls)
do
    file -i $i | grep 'us-ascii' >>/dev/null

    if [ $? -eq 0 ]
       then
       iconv $i -f us-ascii -t utf8 -o $i
    fi
done

Bueno, é isso hoje.
Ps: Caso alguém queira fazer um script mais genérico e com opções de argumentos como entrada, será bem vindo.

Escrito por zrhans

Professor at UFSM

Deixe um comentário

Faça o login usando um destes métodos para comentar:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s