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

Jeu de caractères et encodage Django

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