Importar una base UTF-8

Resulta que la mayoría de los hostings no tienen ni idea de lo que hacen con sus bases de datos, yo digo que el problema lo generaron los cambios de codificación de caracteres más que los ISP, pero si hay responsabilidad, probablemente está en no leer los changelog.txt

En mi caso la migración ni se sintió salvo por el tema de las fechas, servidores con una fecha pasando a otro con otra fecha, generó un poco de conflicto, pero fue todo "sin grandes problemas"
Ahora bien, el tema de la codificación es un martirio, unas fechas se arreglan, pero que te rompan todas las tildes y eñes es un dolor de huevo (si, literal), y noto que cada vez que alguien quiere migrar algo, revienta.

Posibles causas: MySQL Server, MySQL Client, Phpmyadmin

Cuando uno exporta una base de datos, habitualmente comprimida para que no pese mucho y la quiere subir a otro server, la codificación es lo que complicará las cosas.

Lo que descrubrí es muchos servers que tienen estas tres aplicaciones configuradas distinto, ejemplo. El server por default utf-8, el cliente latin1 (ISO), listo, cóctel para el desastre.

En el caso de anoche, ayudando a un amigo con su blog, teniendo la base creada en UTF 8 volvía una y otra vez a reventar los caracteres. Resulta que el cliente de mysql estaba en Latin1, así que por SSH más o menos logré cargar la base así:

gunzip < archivo.sql.gz | mysql -u usuario -p --default-character-set=utf8 base_destino
(el Gunzip es porque lo estaba sacando desde un archivo comprimido)

La cuestión está en --default-character-set=utf8 , esto le obliga a usar una codificación que queramos y no la que tiene por default.

Esto no te lo explican casi en ningún lado, jeje, pero está bueno saberlo, te puede salvar el día y ahorrarte horas y horas de dolor de cabeza.

El PHP My Admin tiene el problema que exporta como dice el cliente de MySQL y confunde como dice el server de MySQL, así que es muy factible exportar el archivo .sql con errores o, lo que es peor, ya sin una codificación correcta, una conversión de conversión que directamente arruina TODOS los caracteres y no hay forma de resolverlo. Así que primero revisen bien el archivo generado (sea ISO o UTF-8), que lo puedan abrir en alguno de esos modos y recién después lo importan.

Otro detalle: no hay ningún encabezado que nos diga si un tipo de caracteres es uno o el otro, se van a dar cuenta por los erroes agregados :P

Y para completar: en estos días migran mi base de datos también :D pero ya está todo en UTF-8, espero que no hagan cagadas, jajaja

PS: post auspiciado por el famoso gato

Categoría: Programación Etiquetas:  
Otros posts que podrían llegar a gustarte...

Comentarios

  • Alejandro    

    Me paso algo parecido el otro dia, veo que por suerte no soy al unico que les pasan estas cosas

    • Responder
    • Citar
    • Comentado:
  • Guty    

    Hay una remera sobre el gato, en un lado dice "its dead" y en la espalda "its alive" o algo así.
    La codificación es una poronga, me volví loco con el WP y un shoutbox, tanto quilombo y después lo saqué por el spam jeje

    • Responder
    • Citar
    • Comentado:
  • GFer    

    Después de tanto renegar, yo terminé corrigiendo todo a mano. Si tengo que migrar otra vez de hosting, arranco otra vez de cero.

    • Responder
    • Citar
    • Comentado:
  • bla!    

    En mi caso nunca tuve problema guardo todo usando el htmlentities y stripslashes y va como piña, espero que no haya sido casualidad
    Saludos

    • Responder
    • Citar
    • Comentado:
  • GFer    

    Ah, me olvidaba...

    Gato de mierda ese, no sabés si le tenés que cambiar las piedritas o no(?)

    • Responder
    • Citar
    • Comentado:
  • Gaston    

    Yo lo huebiera hecho a lo cabeza (manualmente) porque mi base de datos no pesa nada, pero es para tener en cuenta el tp Guiño

    • Responder
    • Citar
    • Comentado:
  • ¿Osea que el archivo UTF-8 que genera la exportación de MYSQL no tiene el BOM?

    que truuuuuuuuuuuuuucho

    • Responder
    • Citar
    • Comentado:
  • Che, o me faltan 15 minutos de cocción ó el viernes me pego mal....pero, que tiene que ver
    el pobre gatito del limado de Schrodinger?

    • Responder
    • Citar
    • Comentado:
  • Fabio    


    clasificado dijo:

    ¿Osea que el archivo UTF-8 que genera la exportación de MYSQL no tiene el BOM?

    que truuuuuuuuuuuuuucho


    la mayoría salen "como se les canta" sin BOM


    Gaston dijo:
    Yo lo huebiera hecho a lo cabeza (manualmente) porque mi base de datos no pesa nada, pero es para tener en cuenta el tp Guiño


    esta que subí era de 30Mb (el archivo.sql), la de este blog llega a los 60Mb :P si... a mano.... YA LO HICE! y estuve varias horas para subir todo el blog.... naaaaaaa, otra vez no...

    • Responder
    • Citar
    • Comentado:
  • Para pasar YTB a UTF8 también me costó un montón, tanto que hay cosas que siguen saliendo con los simbolitos raros.

    Lo del BOM o sin BOM es otro quilombo. Por ejemplo si uno escribe algo en UTF8 para que PHP lo devuelva sin el header() error lo tiene que guardar sin el BOM.

    • Responder
    • Citar
    • Comentado:
  • mariano    

    gracias fabio, el del post soy yo que estuve una noche entera puteando porque no entendia donde estaba el charset diferente de mierda.... en fin; un detalle hacerlo a mano es casi imposible porque terminas con ganas de asesinar al creador de los charsets, de las bases de datos y con ganas de irte a hacer mermelada artesanal en villa la angostura Guiño

    • Responder
    • Citar
    • Comentado:
  • Leo    

    Si se va a comenzar una base de datos desde cero? Que codificación conviene utilizar?

    • Responder
    • Citar
    • Comentado:
  • mariano    

    Leo, yo te diria que UTF8

    • Responder
    • Citar
    • Comentado:
  • Nesto    


    Fabio, no puedo dormir, no tengo fiesta, me cortaron el cable;


    1) Cual es el sentido de la vida ?
    2) El mundo se acabara en le 2012?
    3) Si seguimos asi se terminara todo?
    4) Existe Dios?
    5) Existen logias secretas que conspiran (Masones-Sionistas-Iluminatis) y que manejan la economia mundial y establecer un orden Global?
    6) Que va hacer de mi vida a los 70 años ? Tendre una jubilacion digna ?

    El Nesto

    • Responder
    • Citar
    • Comentado:
  • Fabio    


    Nesto dijo:

    Fabio, no puedo dormir, no tengo fiesta, me cortaron el cable;


    1) Cual es el sentido de la vida ?

    No tiene

    2) El mundo se acabara en le 2012?

    No, era el 29 de Agosto de 1997

    3) Si seguimos asi se terminara todo?

    No, comenzará el infinito (!)

    4) Existe Dios?

    Si, soy yo, alábame esta

    5) Existen logias secretas que conspiran (Masones-Sionistas-Iluminatis) y que manejan la economia mundial y establecer un orden Global?

    Si, una es la de los lectores de fabio.com.ar

    6) Que va hacer de mi vida a los 70 años ? Tendre una jubilacion digna

    Apenas puedo asegurarte una muerte digna y venís a pedir jubilación?

    El Nesto


    El Fabio

    • Responder
    • Citar
    • Comentado:
  • Zurdito    

    Fabio dijo:


    5) Existen logias secretas que conspiran (Masones-Sionistas-Iluminatis) y que manejan la economia mundial y establecer un orden Global?
    Si, una es la de los lectores de fabio.com.ar


    Yo soy el tesorero

    El Zurdo

    • Responder
    • Citar
    • Comentado:
    • Revisado: 03/02/2008 - 17:34:29

Deje su comentario:

Tranquilo, su email nunca será revelado.
La gente de bien tiene URL, no se olvide del http/https
Para evitar bots, si se tardó mucho en leer la nota seguramente no sirva y tenga que intentar dos veces

Negrita Cursiva Imagen Enlace


comentarios ofensivos o que no hagan al enriquecimiento del post serán borrados/editados por el administrador