我在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/

10-11 02:49
查看更多