Définissez le charset
option pour utf8mb4
dans les OPTIONS
dict des DATABASES
paramètre dans le fichier de paramètres de Django :
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'my_db',
'USER': 'my_user',
'PASSWORD': 'my_pass',
'HOST': 'my.host',
'OPTIONS': {
'charset': 'utf8mb4' # This is the important line
}
}
}
Ces options seront transmises en tant qu'arguments à la fonction de connexion du pilote mysql, qui est généralement mysqlclient
. Ici vous pouvez voir dans la documentation tous ces paramètres :
https://mysqlclient.readthedocs.io/user_guide.html#functions-and -attributs
Si vous utilisez un pilote différent pour mysql cependant, vous pourriez avoir besoin d'une option différente.
Assurez-vous également que dans la base de données MySQL, le jeu de caractères de la colonne, de la table ou de la base de données entière est défini sur utf8mb4
. Pour plus d'informations sur les jeux de caractères dans MySQL, consultez :
Documentation MySQL :Spécification des jeux de caractères et des classements
Documentation MySQL :Le jeu de caractères utf8mb4 (Codage Unicode UTF-8 à 4 octets)
Débordement de pile :Quelle est la différence entre les jeux de caractères utf8mb4 et utf8 dans MySQL ?
Il y a BTW une pull-request en cours dans Django pour faire utf8mb4
la valeur par défaut :https://github.com/django/django/pull/8886