Archivo de la etiqueta: bases de datos

Arreglar una doble conversión a UTF-8

Esta es una de esas entradas de recordatorio para cuando me haga falta otra vez, y además, que le pueda servir a alguien más.

Ayer, a mis amigos de Fanboy.es les cerraron el chiringuito por consumo excesivo de recursos, y por el mensaje del administrador del hosting, tenía toda la pinta de ser culpa de algún plugin que están usando en WordPress.

Anoche, después de que les reactivaran el servicio, me puse a actualizarles el WP y el muy puñetero la cagó al actualizar la BB.DD., porque empezaron a salir caracteres extraños en lugar de las tildes, como si la página estuviese codificada en Latin1, y los datos en UTF-8.

Esta mañana me he puesto a mirar y resulta que lo que había pasado es que el actualizador había convertido a UTF-8 las tablas que ya estaban en UTF-8, así que ahora los caracteres que debían ocupar 2 bytes (los acentuados), estaban ocupando 4 bytes.

Por ejemplo: la palabra “próximo” estaba así “próximo”:

00000000 70 72 c3 83 c2 b3 78 69 6d 6f 0a |pr....ximo.|

Así que lo que he hecho ha sido hacer una copia de seguridad de la BB.DD. y ponerme a buscar cómo “volver atrás” en esa conversión. Buscando un poco por internet, he encontrado esta página, e inspirándome en lo que cuentan ahí, he hecho la conversión de esta forma:

sed -e 's/\xc3\x83\xc2\(.*\)/\xC3\1/g' -e 's/\xC3\x82\xC2\(.*\)/\xC2\1/g' -e 's/\xc3\xa2\xc2\x80\xc2\(.*\)/\xe2\x80\1/g' fanboyes_blog.sql > fanboyes_blog_utf8.sql

Ya sólo quedaba importar ese fichero de nuevo en la BB.DD… Et voilà!, ¡todo funcionando perfectamente! :-)

Una vez más, trabajar con Linux y herramientas GNU me ha ayudado a solucionar un problema… ;)