Python3+Django 1.10+mysqlclient 1.3.9: 无法保存表情字符

Python3+Django1.10+mysqlclient1.3.9: cannot save emoji characters

在管理面板中保存带有表情符号字符的字段时,我在 django 中遇到以下错误。

OperationalError at /admin/core/message/add/ (1366, "Incorrect string value: '\xF0\x9F\x98\x9E \xF0...' for column 'name' at row 1")

我确定数据库已准备好用于 utf8mb4,因为我可以 write/read 这些表情符号字符 phpmyadmin

此外,保存的表情符号字符在 phpmyadmin 中正确显示,但在 django 输出中显示 ???

在我的另一个 django 项目中,emoji 播放效果很好,直到我找不到两种环境之间的区别。

那么当我使用 python 保存同样的东西时会出现什么问题?

问题出在 django 框架下,所以我想要一个让 django 工作的解决方案。

使用 OPTIONS - 字符集settings.py 中设置 DATABASE 部分解决了这个问题:

# Database
# https://docs.djangoproject.com/en/1.10/ref/settings/#databases

DATABASES = { 
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'myproject',
        'HOST': 'mysql',
        'USER': 'django',
        'PASSWORD': '******',
        'OPTIONS': {
            # !!!!!! THIS MATTERS !!!!!!
            'charset': 'utf8mb4',
        }
    },  
}

查看文档:https://docs.djangoproject.com/en/1.10/ref/settings/#charset