即使使用 utf8mb4_unicode_ci,在 django + mysql 中输入表情符号也会失败

Mar*_*era 0 mysql django unicode emoji

我正在尝试将表情符号插入到我title的 django + MySQL 应用程序中的专栏中。

我直接用 PhpMyAdmin 编辑数据库。我将列的字符集更改为utf8mb4_unicode_ci并在表中手动插入了表情符号。

这是表结构: 在此输入图像描述

这是带有表情符号的表格行: 在此输入图像描述

但是当我在 django admin 中打开这个对象时,表情符号丢失了:

在此输入图像描述

如果我尝试输入表情符号并保存,则会出现以下异常:

MySQLdb._exceptions.OperationalError: (1366, "Incorrect string value: '\\\\xF0\\\\x9F\\\\x92\\\\xA9' for column 'title' at row 1")
Run Code Online (Sandbox Code Playgroud)

我缺少什么?

Mar*_*era 5

缺少的是charsetmysql 数据库的选项

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        ...
        'OPTIONS': {
            ...
            'charset': 'utf8mb4',
        },
    }
}
Run Code Online (Sandbox Code Playgroud)