Con este método conseguimos convertir la base de datos y el código php a utf8 de forma rapida
Realizado script para hacer la conversión lo más rápido posible
#!/bin/bash
## Primer paso es pasar el archivo con la copia de la base de datos a utf8
##
## pasamos el archivo como primer parámetro al script, y se generara un archivo
## con el mismo nombre + -utf8.sql
##
## Una vez obtenido el archivo comenta las lineas hasta el exit incluido.
##
## Nos situamos en el directorio del proyecto y ejecutamos el script para comenzar
## la transformación de los archivos php, js, html y .htacces
## Modificar codificación de base de datos
bd=totbisbalU8
usuario=root
pass=`contrasenya mysql`
fichero_latin="$1"
fichero_utf8="${1}-utf8.sql"
cp "$fichero_latin" "$fichero_utf8"
# iconv -f LATIN1 -t UTF8 "$fichero_latin" > "$fichero_utf8"
perl -pi -w -e 's/latin1/utf8/g;' "$fichero_utf8"
perl -pi -w -e 's/Ã /à/g;' "$fichero_utf8"
perl -pi -w -e 's/é/é/g;' "$fichero_utf8"
perl -pi -w -e 's/è/è/g;' "$fichero_utf8"
perl -pi -w -e 's/Ã/í/g;' "$fichero_utf8"
perl -pi -w -e 's/ó/ó/g;' "$fichero_utf8"
perl -pi -w -e 's/ò/ò/g;' "$fichero_utf8"
perl -pi -w -e 's/ú/ú/g;' "$fichero_utf8"
perl -pi -w -e 's/ñ/ñ/g;' "$fichero_utf8"
perl -pi -w -e 's/í‘/Ñ/g;' "$fichero_utf8"
mysql -u$usuario -p$pass -e "DROP DATABASE $bd;"
mysql -u$usuario -p$pass -e "CREATE DATABASE $bd CHARACTER SET utf8 COLLATE utf8_general_ci;"
mysql -u$usuario -p$pass $bd < "$fichero_utf8"
exit # Fin de la primera fase: Modificar codificación de base de datos
## Modificar códificación de archivos
find . -regex ".*\.\(js\|php\|html\|phtml\)" -printf "%p\n" | while IFS=":" read file ; do
echo - "$file"
iconv -f iso-8859-1 -t utf-8 "$file" > "${file}-utf8"
if [ $? = 0 ] ; then
mv "${file}-utf8" "$file"
else
echo - Error al pasar $file a utf8
echo
read -p "Continuar (s/n): " OPCION
[[ "$OPCION" = "n" ]] && exit
fi
done
## Modificar código html
find . -regex ".*\.\(php\|html\)" -printf "%p\n" | while IFS=":" read file ; do
echo - "$file"
sed -i -e "s/charset=iso-8859-1/charset=utf-8/g" "$file"
done
## Modificar .htaccess
find . -name '.htaccess' -printf "%p\n" | while IFS=":" read file ; do
echo - "$file"
sed -i -e "s/iso-8859-1/utf-8/g" "$file"
done
Si mysql os da un error al importar la base de datos, es necesario ejecutar mysql en una terminal y ejecutar las dos sentencias siguientes.
set global net_buffer_length=1000000;
set global max_allowed_packet=1000000000;
Vamos a phpmyadmin para modificarle la codificación a utf8
Importamos el archivo en utf8
En el código php especificarle la codificación mediante:
mysql_query("SET NAMES 'utf8'");
Justo después de crear con la conexión en php con la base de datos.