utf8 set_charset query create convert charset mysql encoding utf-8 phpmyadmin

set_charset - Problema UTF8 con MySQL 5



utf8 mysql (4)

Estoy migrando mi blog de WordPress y phpBB Forum a un nuevo servidor de alojamiento. Estoy usando phpMyAdmin para importar el script SQL de la base de datos en el sitio anterior.

Cuando abro el script .sql con Kate, dice que usa UTF8 como codificación. Cuando importo el sql en el nuevo servidor, tengo la opción en phpMyAdmin para elegir la codificación, donde utf8 está seleccionado por defecto.

Aún así, cuando termino de importar la base de datos, leo los mensajes directamente en phpMyAdmin, y veo caracteres como "é", "ñ", etc. que no han sido "interpretados" y han sido reemplazados con caracteres extraños inscritos.

Puedo ver que mi instalación de WordPress tampoco funciona. Aparentemente hay un problema con esta cosa de codificación, pero creo que el problema está en la base de datos MySQL o en phpMyAdmin y no en WordPress.

Las versiones de MySQL son prácticamente las mismas, MySQL 5, pero una revisión diferente. Además, no hubo ningún problema al migrar la base de datos del foro, por lo que esto es aún más extraño ...

Estoy perdido en cuanto a cómo solucionar esto ... Cualquier idea es bienvenida.


La codificación del archivo de texto .sql no tiene nada que ver con la codificación de la base de datos. Necesita decirle a MySQL que cree las tablas de manera explícita con una intercalación UTF-8, por defecto usa iso-8859-1.


Muchas gracias por sus respuestas. Encontré la solución, y me siento realmente tonto por no haberme dado cuenta antes. Se suponía que todo iba a funcionar bien:

-El archivo fue codificado con utf8-Los cuadros fueron declarados con utf8:

SET character_set_client = utf8; - El servidor MySQL se configuró con utf8 Etc.

Lo que no me di cuenta en primer lugar es que estaba usando una copia de seguridad de la base de datos del asistente de copia de seguridad de cPanel. Tan pronto como me di cuenta de esto, utilicé phpMyAdmin en el viejo servidor para exportar la base de datos, importarla en el nuevo servidor y listo, problema solucionado.

phpMyAdmin entiende phpMyAdmin mejor que cPanel: P Aparentemente cPanel exporta la secuencia de comandos para que se importe con cPanel. Esto probablemente también hubiera funcionado, pero confío en phpMyAdmin mejor.

Muchas gracias por tus respuestas.


Me encontré con el mismo problema, ya que luché con él durante aproximadamente una hora y rompió muchos de mis sitios, pensé que miraría y vería si alguien más estaba luchando con eso y publicaría una solución: la solución es simplemente para especificar el juego de caracteres de importación en la importación.

Si tiene acceso SSH a su host, primero vuelva a soltar todas sus tablas en la nueva base de datos, luego ejecute este comando en la sesión SSH (suponiendo que su viejo archivo de volcado es olddatabase.dump.sql ):

$ mysql -h host -u username -p contraseña -default-character-set = utf8 database <olddatabase.dump.sql (reemplace host, nombre de usuario, contraseña y base de datos con los valores apropiados)

Esta es la forma más simple y directa de resolver el problema.


Has intentado agregar

SET NAMES ''utf8'';

a su vertedero sql?

Lo que pasa con utf8 o las codificaciones en general es que para tener éxito, debes asegurarte de que:

  • el archivo está codificado utf8 sin firma
  • la codificación predeterminada del servidor mysql está establecida en utf8
  • la conexión es utf8 (es por eso que pones SET NAMES ''utf8'' en tu archivo sql).
  • todas las tablas y columnas tienen la codificación y el juego de caracteres correctos
  • todos sus archivos web tienen que estar codificados para utf8 también. Y no funciona solo para agregar el encabezado correcto. Tienes que abrir el archivo, verificar si la codificación es utf8, si no, cortar todo, cambiar la codificación a utf8 y pegar todo de nuevo. ¡No funciona, si solo cambias la codificación y guardas el archivo!