Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment résoudre le problème d'encodage de caractères MySQL ?

Le problème d'encodage de caractères MySQL est l'endroit où votre base de données MySQL provoque l'affichage incorrect des caractères UTF8 (comme å, ä et ö). En effet, par défaut, MySQL utilise le jeu de caractères latin1. Ce problème est devenu important en raison de la nature mondiale du contenu Web de nos jours. Vous pouvez le résoudre en définissant l'encodage de caractères MySQL sur UTF8. Cela peut être fait de plusieurs façons.

  1. Exécutez une requête "SET NAMES 'utf8'" au début de chaque connexion - cela forcera MySQL à utiliser UTF8 pour la durée de vie de cette connexion. C'est une bonne option si vous n'avez pas accès au fichier my.cnf (linux/mac) / my.ini (windows).
  2. Recherchez et modifiez le fichier my.cnf (linux/mac) / my.ini (windows) sur votre serveur de base de données. Ajoutez les lignes suivantes au mysqld section :[mysqld] default-character-set=utf8 skip-character-set-client-handshake Maintenant, si vous redémarrez le serveur MySQL, l'encodage de caractères MySQL doit être UTF8 par défaut
  3. Et si vous possédez déjà une base de données ? Comment convertir son contenu en UTF8 ? Vous pouvez utiliser les 3 requêtes suivantes. Remplacez DATABASE_NAME, TABLE_NAME et FIELD_NAME par vos valeurs. modifier la table TABLE_NAME modifier le blob FIELD_NAME ; modifier la base de données DATABASE_NAME charset=utf8 ; modifier la table TABLE_NAME modifier FIELD_NAME jeu de caractères varchar(255) utf8 ; Convertissez le champ en BLOB, c'est un type de champ binaire. Ensuite, nous changeons le jeu de caractères de la base de données en utf8. Enfin, nous reconvertissons notre champ en texte ou en varchar.

Vous pouvez vérifier votre encodage de caractères MySQL avec la requête suivante.

Encodage de caractères MySQL par défaut

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)

Encodage de caractères MySQL requis

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)

Vous devrez également vous assurer que votre cadre de programmation comme Django, Code Igniter, etc. utilise l'encodage UTF8.