Script de corrección de CHARSETS utf-8 mal exportados
Estuve esta tarde trabajando en la migración de la web de www.glug.es a Drupal 5, desde un Drupal 4.6, vamos todo un reto. He tenido una serie de complicaciones al exportar la base de datos ya que tiene un charset latin1_swedish_ci y un collate latin1 pero que no hay manera de que me lo exporte bien por lo que los acentos, las ñ y todo carácter que no estea en ASCII lo pilla mal, por lo que como soy un vago, pero un Vago Bueno™, me puse manos a la obra y me he currado un cutre script en bash que me convierte la gran base de datos de la web citada. Aquí os lo dejo para regocijo del personal:
#!/bin/bash
cp $1 $(basename $1 .sql)."orig.sql";
echo "";
echo "Script de corrección de CHARSETS utf-8 mal exportados";
echo " ---- Creado por Fran Diéguez ---";
echo " --- Versión 0.1 ---";
echo "Vocais Acentuadas...";
echo " - Efectuando substitución de á";
sed "s/á/á/g" $1 > temp.sql;
rm $1;
mv temp.sql; $1;
sed "s/ã¡/á/g" $1 > temp.sql;
rm $1;
mv temp.sql; $1;
echo " - Efectuando substitución de é";
sed "s/é/é/g" $1 > temp.sql;
rm $1;
mv temp.sql; $1
sed "s/ã©/é/g" $1 > temp.sql;
rm $1;
mv temp.sql; $1;
echo " - Efectuando substitución de í";
sed "s/Ã/í/g" $1 > temp.sql;
rm $1;
mv temp.sql; $1;
sed "s/ã/í/g" $1 > temp.sql;
rm $1;
mv temp.sql; $1;
sed "s/ÃÂ/í/g" $1 > temp.sql;
rm $1;
mv temp.sql; $1;
echo " - Efectuando substitución de ó";
sed "s/ó/ó/g" $1 > temp.sql;
rm $1;
mv temp.sql; $1
sed "s/ã³/ó/g" $1 > temp.sql;
rm $1;
mv temp.sql; $1;
echo " - Efectuando substitución de ó";
sed "s/Ó/ó/g" $1 > temp.sql;
rm $1;
mv temp.sql; $1;
sed "s/ã“/ó/g" $1 > temp.sql;
rm $1;
mv temp.sql; $1;
echo " - Efectuando substitución de ú;";
sed "s/ú/ú;/g" $1 > temp.sql;
rm $1;
mv temp.sql; $1;
sed "s/ãº/ú;/g" $1 > temp.sql;
rm $1;
mv temp.sql; $1;
echo "Vocais acentuadas maiú;sculas...";
echo " - Efectuando substitución de á";
sed "s/Ã/á/g" $1 > temp.sql;
rm $1;
mv temp.sql; $1;
sed "s/Ã/á/g" $1 > temp.sql;
rm $1;
mv temp.sql; $1;
echo " - Efectuando substitución de é";
sed "s/É/é/g" $1 > temp.sql;
rm $1;
mv temp.sql; $1;
echo " - Efectuando substitución de í";
sed "s/Ã/í/g" $1 > temp.sql;
rm $1;
mv temp.sql; $1;
echo " - Efectuando substitución de ó";
sed "s/Ó/ó/g" $1 > temp.sql;
rm $1;
mv temp.sql; $1;
echo " - Efectuando substitución de ú;";
sed "s/Ú/ú;/g" $1 > temp.sql;
rm $1;
mv temp.sql; $1;
echo "Vocais Especiais...";
echo " - Efectuando substitución de à";
sed "s/Ã /à/g" $1 > temp.sql;
rm $1;
mv temp.sql; $1;
echo " - Efectuando substitución de õ";
sed "s/õ/õ/g" $1 > temp.sql;
rm $1;
mv temp.sql; $1;
echo " - Efectuando substitución de ü";
sed "s/ü/ü/g" $1 > temp.sql;
rm $1;
mv temp.sql; $1;
sed "s/ã¼/ü/g" $1 > temp.sql;
rm $1;
mv temp.sql; $1;
echo " - Efectuando substitución de ê";
sed "s/ê/ê/g" $1 > temp.sql;
rm $1;
mv temp.sql; $1;
echo " - Efectuando substitución de ô";
sed "s/ô/ô/g" $1 > temp.sql;
rm $1;
mv temp.sql; $1;
echo " - Efectuando substitución de õ";
sed "s/õ/õ/g" $1 > temp.sql;
rm $1;
mv temp.sql; $1;
echo " - Efectuando substitución de ç";
sed "s/ç/ç/g" $1 > temp.sql;
rm $1;
mv temp.sql; $1;
echo "Letras especiais...";
echo " - Efectuando substitución de ñ";
sed "s/ñ/ñ/g" $1 > temp.sql;
sed "s/ã±/ñ/g" $1 > temp.sql;
á±
rm $1;
mv temp.sql; $1;
echo " - Efectuando substitución de º";
sed "s/º/º/g" $1 > temp.sql;
rm $1;
mv temp.sql; $1;
echo " - Efectuando substitución de ª";
sed "s/º/º/g" $1 > temp.sql;
rm $1;
mv temp.sql; $1;
echo " - Efectuando substitución de z";
sed "s/ã§/z/g" $1 > temp.sql;
rm $1;
mv temp.sql; $1;
ã§
echo "Signos de puntuación..."
echo " - Efectuando substitución de ¡";
sed "s/¡/¡/g" $1 > temp.sql;
rm $1;
mv temp.sql; $1;
echo " - Efectuando substitución de ¿";
sed "s/¿/¿/g" $1 > temp.sql;
rm $1;
mv temp.sql; $1;
echo " - Efectuando substitución de <espacio>";
sed "s/Â / /g" $1 > temp.sql;
rm $1;
mv temp.sql; $1;
echo "Todavía faltan algú;ns carácteres - sigo no traballo...";
echo "Para máis información vai a www.mabishu.com";