如何在python + django + mysql项目中使用表情符号
#python #django #mysql #emoji

您是否曾经收到过这样的错误,同时将包含表情符号的一些文本保存到数据库中?

DataError at /admin/myapp/mymodel/1/change/
(1366, "Incorrect string value: '\\xF0\\x9F\\x99...' for column 'text' at row 1")

要克服这个问题,您必须将数据库和应用程序Charset更改为utf8mb4

mysql

  • 备份您的数据库

  • 编辑MySQL conf并添加/设置Charset设置:

nano /etc/mysql/mysql.conf.d/mysqld.cnf
#
# * Character Set
#
character_set_server = utf8mb4
collation_server = utf8mb4_unicode_ci
  • 更新数据库表字符集to utf8mb4
SELECT CONCAT('ALTER TABLE ', table_name, ' CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;') AS alter_statement
FROM information_schema.tables
WHERE table_schema = 'mydatabasename';
  • 运行生成的ALTER语句

  • 重新启动MySQL

/etc/init.d/mysql restart

Django

  • 将带有utf8mb4值的charset选项添加到您的数据库设置:
DATABASES = {
    "default": {
        "ENGINE": "django.db.backends.mysql",
        # ...
        "OPTIONS": {
            "charset": "utf8mb4",
        },
    },
}
  • 重新启动您的应用程序服务器

完成了,现在您可以将表情符号存储在数据库中!ð