我在django的管理面板中保存一个带有emoji字符的字段时出现了下面的错误。
在/admin/core/message/add出现操作错误/
(1366,“错误的字符串值:'\xF0\x9F\x98\x9E\xF0…'对于第1行的列'name')
我确信数据库已经准备好utf8mb4
,因为我可以在phpmyadmin
中写入/读取这些emoji字符。
此外,保存的emoji字符在phpmyadmin
中正确显示,但在django输出中显示???
。
在我的另一个django项目中,emoji发挥得很好,直到我找不到两个环境之间的区别。
那么,当我使用python保存相同的东西时,会出现什么问题呢?
问题是在django框架下,所以我想要一个让django工作的解决方案。
最佳答案
在带有选项的DATABASE
中设置settings.py
部分-字符集解决了此问题:
# 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
关于python - Python3 + Django1.10 + mysqlclient1.3.9:无法保存表情符号字符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41311547/