español - mysql utf8 php
Cargando el volcado codificado UTF-8 en MySQL (3)
¿Intentó agregar la opción --default-character-set = name, como esta:
mysql --default-character-set=utf8 -h ddd -u zzz -p dbname < dump.sql
Tuve ese problema antes y funcionó después de usar esa opción.
¡Espero eso ayude!
Ayer estuve escuchando este problema por unas horas:
Tengo una base de datos en el servidor MySQL 4.1.22 con la codificación establecida en "UTF-8 Unicode (utf8)" (según lo informado por phpMyAdmin). Las tablas en esta base de datos tienen conjunto de caracteres predeterminado en latin2 . Pero, la aplicación web (CMS Made Simple escrito en PHP) que lo usa muestra páginas en utf8 ...
Por más jodido que sea, realmente funciona. La aplicación web muestra los caracteres correctamente (se usan principalmente checo y polaco).
Ejecuto: "mysqldump -u xxx -p -h aaa nombrebd> dump.sql". Esto me da un script SQL que:
- se ve perfecto en cualquier editor (como Notepad +) cuando se muestra en UTF-8 - todos los caracteres se muestran correctamente
- todas las tablas en el script tienen juego de caracteres predeterminado en latin2
- tiene "/ *! 40101 SET NAMES latin2 * /;" línea al principio (entre otros ajustes)
Ahora, quiero exportar esta base de datos a otro servidor que se ejecuta en MySQL 5.0.67, también con la codificación del servidor establecida en "UTF-8 Unicode (utf8)". Copié toda la instalación de CMS Made Simple, copié el script dump.sql y ejecuté "mysql -h ddd -u zzz -p nombrebd <dump.sql". Después de eso, todos los caracteres están codificados al mostrar las páginas web de CMSMS.
Intenté configurar:
SET character_set_client = utf8;
SET character_set_connection = latin2;
Y todas las combinaciones (solo para estar seguro, incluso si no tiene ningún sentido para mí): latin2 / utf8, latin2 / latin2, utf8 / utf8, etc. - no ayuda. Todos los personajes siguen revueltos, aunque a veces de una manera diferente :).
También traté de reemplazar todas las configuraciones de latin2 con utf8 en el script (establecer nombres y conjuntos de caracteres predeterminados para las tablas). Nada.
¿Hay aquí expertos de MySQL que puedan explicar en pocas palabras (estoy seguro de que es simple después de todo) cómo funciona realmente todo este proceso de codificación? Leo 9.1.4. Conjuntos de caracteres de conexión y colaciones, pero no encontró nada útil allí.
Gracias, Matt
Uf ... vale, parece que encontré una solución.
MySQL no es el culpable aquí. Hice un simple volcado y la carga ahora, sin cambios en el script dump.sql, lo que significa que dejé "set names latin2" y tablas de conjuntos como estaban. Luego cambié mi instalación CMSMS original a la nueva base de datos y ... funcionó correctamente. Así que, en realidad, la codificación en la base de datos está bien, o al menos funciona bien con la instalación de CMSMS que tenía en mi antiguo proveedor de alojamiento (aparentemente, CMSMS hace cosas divertidas con la codificación de caracteres ).
Para que funcione en mi nuevo proveedor de hosting, en realidad tuve que agregar esta línea a lib / adodb / drivers / adodb-mysql.inc.php en la instalación de CMSMS:
mysql_query(''set names latin2'',$this->_connectionID);
Esta es una solución ligeramente modificada de esta publicación . Usted puede encontrar la línea exacta allí también. Por lo tanto, parece un problema de configuración del cliente de mysql.
SOLUCIÓN para mí:
establezca esta opción en su archivo php, después de mysql_connect (o después de mysql_select_db ) ..
mysql_query("SET NAMES ''utf8''");