sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo mostrar caracteres UTF-8 en phpMyAdmin?

Desafortunadamente, phpMyAdmin es una de las primeras aplicaciones php que habla correctamente con MySQL sobre el juego de caracteres. Lo más probable es que su problema se deba al hecho de que la base de datos no almacena las cadenas UTF-8 correctas en primer lugar.

Para mostrar correctamente los caracteres correctamente en phpMyAdmin, los datos deben almacenarse correctamente en la base de datos. Sin embargo, convertir la base de datos en el juego de caracteres correcto a menudo daña las aplicaciones web que no conocen la característica relacionada con el juego de caracteres proporcionada por MySQL.

¿Puedo preguntar:es MySQL> versión 4.1? ¿Para qué aplicación web es la base de datos? ¿phpBB? ¿Se migró la base de datos desde una versión anterior de la aplicación web o una versión anterior de MySQL?

Mi sugerencia es no hermano si la aplicación web que está utilizando es demasiado antigua y no es compatible. Solo convierta la base de datos a UTF-8 real si está seguro de que la aplicación web puede leerlos correctamente.

Editar:

Su MySQL es> 4.1, eso significa que es compatible con charset. ¿Cuál es la configuración de intercalación de juegos de caracteres para su base de datos? Estoy bastante seguro de que estás usando latin1 , que es el nombre de MySQL para ASCII, para almacenar el texto UTF-8 en 'bytes' en la base de datos.

Para clientes que no tienen en cuenta el conjunto de caracteres (es decir, mysql-cli y php-mod-mysql), los caracteres se muestran correctamente ya que se transfieren a/desde la base de datos como bytes. En phpMyAdmin, los bytes se leen y se muestran como caracteres ASCII, ese es el texto basura que pareces.

Se pasaron incontables horas hace años (¿2005?) cuando MySQL 4.0 quedó obsoleto, en muchas partes de Asia. Hay una forma estándar de lidiar con su problema y datos engullidos:

  1. Haga una copia de seguridad de su base de datos como .sql
  2. Ábralo en un editor de texto compatible con UTF-8, asegúrese de que se vean correctamente.
  3. Busque charset collation latin1_general_ci , reemplaza latin1 a utf8 .
  4. Guardar como un nuevo archivo sql, no sobrescribir su copia de seguridad
  5. Importe el nuevo archivo, ahora se verá correctamente en phpMyAdmin, y el japonés en su aplicación web se convertirá en signos de interrogación. Eso es normal.
  6. Para su aplicación web php que se basa en php-mod-mysql, inserte mysql_query("SET NAMES UTF8"); después de mysql_connect() , ahora los signos de interrogación desaparecerán.
  7. Agregue la siguiente configuración my.ini para mysql-cli:

    # CLIENT SECTION
    [mysql]
    default-character-set=utf8
    # SERVER SECTION
    [mysqld]
    default-character-set=utf8
    

Para obtener más información sobre charset en MySQL, consulte el manual: http://dev.mysql.com/doc/refman/5.0/en/charset-server.html

Tenga en cuenta que asumo que su aplicación web está usando php-mod-mysql para conectarse a la base de datos (de ahí el mysql_connect() function), ya que php-mod-mysql es la única extensión en la que puedo pensar que aún desencadena el problema HASTA EL DÍA DE ESTE.

phpMyAdmin usa php-mod-mysqli para conectarse a MySQL. Nunca aprendí a usarlo porque cambié a frameworks* para desarrollar mis proyectos php. Te animo encarecidamente a que hagas eso también.

  • Muchos marcos, p. CodeIgniter, Zend, use mysqli o pdo para conectarse a bases de datos. Las funciones mod-mysql se consideran obsoletas debido a problemas de rendimiento y escalabilidad. Además, no desea vincular su proyecto a un tipo específico de base de datos.