Converter arquivos em PHP com encode ISO-8859-1 para UTF-8 mantendo a acentuação

Fernando Valler 02/05/2020 Bash Script, Linux


Certa vez precisei converter o encode de vários arquivos em um projeto PHP, alguns arquivos estavam em ISO-8859-1 e precisava que eles fossem convertidos para UTF-8.

Fazer isso é bem simples basta abrir em um editor como VS Code e mandar salva no encode desejado, o problema era fazer isso para 1.000 arquivos, confesso que até comecei, mas parei quando passei dos 50 arquivos convertidos um a um manualmente e fui procurar um solução mais simples e prática.

Abaixo temos o código de um script bash (Linux) para fazer a conversão de arquivos *.php que estejam no formato ISO-8859-1 para o formato UTF-8 e mantendo os caracteres acentuados.

#!/bin/bash

# Encoding dos arquivos atual
FROM_ENCODING="ISO-8859-1"

# Encoding dos arquivos desejado
TO_ENCODING="UTF-8"

# Comando para converter
CONVERT=" iconv  -f   $FROM_ENCODING  -t   $TO_ENCODING"

# Obter a lista de arquivos e sua codificação, 
# aplicando um filtro e tratando a saída gerada
FILES=(
$(file */** -i -F '' | grep 8859 | awk '{print $1}')
)

for file in "${FILES[@]}"
do :
  echo "Convertendo arquivo: $file";

  # Executa a o comando de conversão em cada arquivo
  $CONVERT $file -o $file
done

exit 0

Foi muito útil para mim e acredito que possa lhe ajudar em algum momento.


Fernando Valler - Programador Web
Fernando Valler

Sou programador web, motivado por desafios e sempre buscando aprender algo novo. Aqui você pode encontrar alguns projetos.