El problema de codificación de caracteres MySQL es donde su base de datos MySQL hace que los caracteres UTF8 (como å, ä y ö) se muestren incorrectamente. Esto se debe a que, de forma predeterminada, MySQL usa el juego de caracteres latin1. Este problema se ha vuelto importante debido a la naturaleza global del contenido web en estos días. Puede resolverlo configurando la codificación de caracteres MySQL en UTF8. Esto se puede hacer de varias maneras.
- Ejecute una consulta "ESTABLECER NOMBRES 'utf8'" al comienzo de cada conexión; esto obligará a MySQL a usar UTF8 durante la vida útil de esa conexión. Esta es una buena opción si no tiene acceso al archivo my.cnf (linux/mac) / my.ini (windows).
- Busque y edite el archivo my.cnf (linux/mac) / my.ini (windows) en su servidor de base de datos. Agregue las siguientes líneas a mysqld sección:[mysqld] default-character-set=utf8 skip-character-set-client-handshake Ahora, si reinicia el servidor MySQL, la codificación de caracteres MySQL debería ser UTF8 por defecto
- ¿Qué sucede si ya tiene una base de datos? ¿Cómo convertir su contenido a UTF8? Puede utilizar las siguientes 3 consultas. Reemplace DATABASE_NAME, TABLE_NAME y FIELD_NAME con sus valores. alterar la tabla TABLE_NAME modificar FIELD_NAME blob; alterar la base de datos DATABASE_NAME charset=utf8; alterar tabla TABLE_NAME modificar FIELD_NAME varchar(255) juego de caracteres utf8; Convierta el campo a BLOB, ese es un tipo de campo binario. Luego cambiamos el juego de caracteres de la base de datos a utf8. Finalmente volvemos a convertir nuestro campo a texto o varchar.
Puede verificar su codificación de caracteres MySQL con la siguiente consulta.
Codificación de caracteres MySQL predeterminada
mysql> show variables like 'char%'; +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | latin1 | | character_set_connection | latin1 | | character_set_database | latin1 | | character_set_filesystem | binary | | character_set_results | latin1 | | character_set_server | latin1 | | character_set_system | latin1 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+ 8 rows in set (0.00 sec)
Codificación de caracteres MySQL requerida
mysql> show variables like 'char%'; +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+ 8 rows in set (0.00 sec)
También deberá asegurarse de que su marco de programación, como Django, Code Igniter, etc., utilice la codificación UTF8.