在管理面板中保存带有表情符号字符的字段时,我在 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/