sql >> Base de Datos >  >> RDS >> Mysql

Juego de caracteres y codificación de Django

Establecer el charset opción a utf8mb4 en las OPTIONS dict de las DATABASES configuración en el archivo de configuración 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
        }
    }
}

Estas opciones se pasarán como argumentos a la función de conexión del controlador mysql, que normalmente es mysqlclient . Aquí puedes ver en la documentación todos estos parámetros:

https://mysqlclient.readthedocs.io/user_guide.html#functions-and -atributos

Si usa un controlador diferente sin embargo, para mysql, es posible que necesite una opción diferente.

También asegúrese de que en la base de datos MySQL, el conjunto de caracteres de la columna, la tabla o la base de datos completa esté configurado en utf8mb4 . Para obtener más información sobre juegos de caracteres en MySQL, consulte:

Documentos de MySQL:Especificación de juegos de caracteres y colaciones
Documentos de MySQL:El conjunto de caracteres utf8mb4 (Codificación Unicode UTF-8 de 4 bytes)
Desbordamiento de pila:¿Cuál es la diferencia entre los juegos de caracteres utf8mb4 y utf8 en MySQL?

Por cierto, hay una solicitud de extracción en curso en Django para hacer utf8mb4 el predeterminado:https://github.com/django/django/pull/8886