Python3 + Django1.10 + mysqlclient1.3.9:无法保存表情符号字符

时间:2016-12-24 08:09:48

标签: python mysql django mysql-python emoji

在管理面板中保存带有表情符号字符的字段时,我在django中收到了以下错误。

  

/ admin / core / message / add /中的OperationalError      (1366,“不正确的字符串值:'\ xF0 \ x9F \ x98 \ x9E \ xF0 ......'代表第1行的'name'”)

我确信数据库已准备好utf8mb4,因为我可以在phpmyadmin中写/读这些表情符号字符。

此外,保存的表情符号字符在phpmyadmin中正确显示,但在django输出中显示???

在我的另一个django项目中,表情符号表现得很好,直到我找不到两种环境之间的区别。

那么当我使用python保存相同的东西时会出现什么问题呢?

问题出在django框架下,所以我想要一个让django工作的解决方案。

1 个答案:

答案 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