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

标签 python mysql django mysql-python emoji

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

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

我确定数据库已准备好用于 utf8mb4,因为我可以在 phpmyadmin 中写入/读取这些表情符号字符。

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

在我的另一个 django 项目中,表情符号播放效果很好,直到我无法找到两种环境之间的区别。

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

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

最佳答案

settings.py 中使用 OPTIONS - charset 设置 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

关于Python3+Django1.10+mysqlclient1.3.9 : cannot save emoji characters,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41311547/

相关文章:

python - 多个 3D 阵列(曲线)的采样/插值

mysql 查询超时杀死(pt-kill)

javascript - 编写此函数的更有效方法? ( Django 、 Ajax )

php - SQL-PHP 日期时间

angularjs - 在 Angular 模块中获取 Django request.user

python - django admin 从操作注册动态模型

python - pybind11 包装的对象的内存开销?

python - 使用子结果聚合多个类别

python - 用户警告的堆栈跟踪

MySQL 表文件名编码