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

¿Cómo resolver el problema de codificación de caracteres MySQL?

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.

  1. 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).
  2. 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
  3. ¿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.