【问题标题】:Entering emoji fails in django + mysql even with utf8mb4_unicode_ci即使使用 utf8mb4_unicode_ci 在 django + mysql 中输入表情符号也会失败
【发布时间】:2019-07-13 12:13:34
【问题描述】:

我正在尝试在我的 django + MySQL 应用程序的title 列中插入一个表情符号。我已经进入 PhpMyAdmin 并做了以下操作:

  • 将列的字符集更改为utf8mb4_unicode_ci
  • 插入了一个表情符号

但是当我在 django admin 中打开这个对象时,表情符号不见了:

如果我尝试输入表情符号并保存,我会收到以下异常:

MySQLdb._exceptions.OperationalError: (1366, "Incorrect string value: '\\\\xF0\\\\x9F\\\\x92\\\\xA9' for column 'title' at row 1")

我错过了什么?

【问题讨论】:

  • 你用的是什么版本的python?实际数据库列的字符集是什么?
  • 列的字符集已经是utf8mb4_unicode_ci。我找到了答案,我需要在 django 设置中将'charset': 'utf8mb4' 设置为数据库的选项

标签: mysql django unicode emoji


【解决方案1】:

缺少的是 mysql 数据库的 charset 选项

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        ...
        'OPTIONS': {
            ...
            'charset': 'utf8mb4',
        },
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多