在管理面板中保存带有表情符号字符的字段时,我在django中收到了以下错误。
/ admin / core / message / add /中的OperationalError (1366,“不正确的字符串值:'\ xF0 \ x9F \ x98 \ x9E \ xF0 ......'代表第1行的'name'”)
我确信数据库已准备好utf8mb4
,因为我可以在phpmyadmin
中写/读这些表情符号字符。
此外,保存的表情符号字符在phpmyadmin
中正确显示,但在django输出中显示???
。
在我的另一个django项目中,表情符号表现得很好,直到我找不到两种环境之间的区别。
那么当我使用python保存相同的东西时会出现什么问题呢?
问题出在django框架下,所以我想要一个让django工作的解决方案。
答案 0 :(得分:2)
使用 OPTIONS - charset 在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