Python3+Django1.10+mysqlclient1.3.9:无法保存表情符号
Posted
技术标签:
【中文标题】Python3+Django1.10+mysqlclient1.3.9:无法保存表情符号【英文标题】:Python3+Django1.10+mysqlclient1.3.9: cannot save emoji characters 【发布时间】:2017-05-09 18:08:18 【问题描述】:在管理面板中保存带有表情符号字符的字段时,我在 django 中收到以下错误。
/admin/core/message/add/ 处的操作错误 (1366,“不正确的字符串值:'\xF0\x9F\x98\x9E \xF0...' 用于第 1 行的列 'name'”)
我确定数据库已经为utf8mb4
做好了准备,因为我可以在phpmyadmin
中写入/读取这些表情符号字符。
此外,保存的表情符号字符在phpmyadmin
中正确显示,但在 django 输出中显示???
。
在我的另一个 django 项目中,表情符号表现良好,直到我无法找到两种环境之间的区别。
那么当我使用 python 保存相同的东西时会出现什么问题?
问题出在django框架下,所以我想要一个让django工作的解决方案。
【问题讨论】:
mysql utf8mb4, Errors when saving Emojis的可能重复 【参考方案1】:在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:无法保存表情符号的主要内容,如果未能解决你的问题,请参考以下文章
centos7 + Apache2.4 + python3.5 +mod_wsgi4.5.15 + Django1.10安装指导
Django 1.10 和 Socket.IO 与 Python 3
如何在python文件中,引用django1.10的model
django virtualenv中使用mysql数据库,python 3.5 django1.10 mysql 5.7.17