【问题标题】:Python3+Django1.10+mysqlclient1.3.9: cannot save emoji charactersPython3+Django1.10+mysqlclient1.3.9:无法保存表情符号
【发布时间】: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工作的解决方案。

【问题讨论】:

标签: python mysql django mysql-python emoji


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-10
    • 2021-09-02
    • 2016-12-11
    • 1970-01-01
    • 2013-01-06
    • 2019-08-07
    相关资源
    最近更新 更多