Overweeg de volgende checklist:
-
Heb je je MySQL-configuratiebestand (/etc/my. cnf) ? Het zou moeten zijn:
[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
En je kunt ze verifiëren 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)
-dankzij Mathias' blogbericht
-
Dwing UTF-8 af voor gebruik tussen Python en 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()
-
Officiële tip van MySQL betreffende
Can't initialize character set
:Deze fout kan een van de volgende oorzaken hebben:
-
De tekenset is een multibyte tekenset en je hebt geen ondersteuning voor de tekenset in de client. In dit geval moet u de client opnieuw compileren door CMake uit te voeren met de
-DDEFAULT_CHARSET=charset_name
of-DWITH_EXTRA_CHARSETS=charset_name
keuze. Zie Sectie 2.9.4, "MySQL-bronconfiguratie Opties” . -
Alle standaard MySQL-binaire bestanden zijn gecompileerd met -
DWITH_EXTRA_CHARSETS=complex
, waarmee ondersteuning voor alle multibyte-tekensets mogelijk is. Zie Sectie 2.9.4, "MySQL-bronconfiguratie Opties” . -
De tekenset is een eenvoudige tekenset die niet is gecompileerd in mysqld, en de tekensetdefinitiebestanden bevinden zich niet op de plaats waar de klant ze verwacht te vinden.
In dit geval moet u een van de volgende methoden gebruiken om het probleem op te lossen:
-
Compileer de client opnieuw met ondersteuning voor de tekenset. Zie Sectie 2.9.4, "MySQL-bronconfiguratie Opties” .
-
Geef aan de client de map op waar de tekensetdefinitiebestanden zich bevinden. Voor veel klanten kun je dit doen met de
--character-sets-dir
optie. -
Kopieer de karakterdefinitiebestanden naar het pad waar de klant ze verwacht.
-
-