Considérez la liste de contrôle suivante :
-
Avez-vous vérifié votre fichier de configuration MySQL (/etc/my. cnf) ? Cela devrait être :
[client] default-character-set = utf8mb4 [mysql] default-character-set = utf8mb4 [mysqld] character-set-client-handshake = FALSE character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci
Et vous pouvez les vérifier via :
mysql> SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%'; +--------------------------+--------------------+ | Variable_name | Value | +--------------------------+--------------------+ | character_set_client | utf8mb4 | | character_set_connection | utf8mb4 | | character_set_database | utf8mb4 | | character_set_filesystem | binary | | character_set_results | utf8mb4 | | character_set_server | utf8mb4 | | character_set_system | utf8 | | collation_connection | utf8mb4_unicode_ci | | collation_database | utf8mb4_unicode_ci | | collation_server | utf8mb4_unicode_ci | +--------------------------+--------------------+ 10 rows in set (0.00 sec)
-merci au article de blog de Mathias
-
Appliquez l'UTF-8 à utiliser entre Python et MySQL :
# Connect to mysql. dbc = MySQLdb.connect(host='###', user='###', passwd='###', db='###', use_unicode=True) # Create a cursor. cursor = dbc.cursor() # Enforce UTF-8 for the connection. cursor.execute('SET NAMES utf8mb4') cursor.execute("SET CHARACTER SET utf8mb4") cursor.execute("SET character_set_connection=utf8mb4") # Do database stuff. # Commit data. dbc.commit() # Close cursor and connection. cursor.close() dbc.close()
-
Conseil officiel de MySQL concernant
Can't initialize character set
:Cette erreur peut avoir l'une des causes suivantes :
-
Le jeu de caractères est un jeu de caractères multi-octets et vous n'avez pas de support pour le jeu de caractères dans le client. Dans ce cas, vous devez recompiler le client en exécutant CMake avec le
-DDEFAULT_CHARSET=charset_name
ou-DWITH_EXTRA_CHARSETS=charset_name
option. Voir la section 2.9.4, « MySQL Source-Configuration options” . -
Tous les binaires MySQL standard sont compilés avec -
DWITH_EXTRA_CHARSETS=complex
, qui permet la prise en charge de tous les jeux de caractères multioctets. Voir la section 2.9.4, « MySQL Source-Configuration options” . -
Le jeu de caractères est un jeu de caractères simple qui n'est pas compilé dans mysqld, et les fichiers de définition du jeu de caractères ne se trouvent pas à l'endroit où le client s'attend à les trouver.
Dans ce cas, vous devez utiliser l'une des méthodes suivantes pour résoudre le problème :
-
Recompilez le client avec la prise en charge du jeu de caractères. Voir la section 2.9.4, « MySQL Source-Configuration options” .
-
Indiquez au client le répertoire où se trouvent les fichiers de définition de jeu de caractères. Pour de nombreux clients, vous pouvez le faire avec le
--character-sets-dir
option. -
Copiez les fichiers de définition de caractères dans le chemin où le client s'attend à ce qu'ils se trouvent.
-
-