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 ";
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";
[...] esto no es solo una solución con la que esté muy de acuerdo. Aúnque también haya escrito un script para solucionarlo. Despues de encontrar muchos procedimientos con los que he trabajado, este es el que mejor trabaja [...]
Write on November 28th, 2009 at 5:36 am