mysql - 在mysql数据库中保存表情符号字符

标签 mysql unicode utf-8 emoji utf8mb4

我正在尝试在 mysql 数据库中保存一些数据,输入包含这样的表情符号字符:'\U0001f60a\U0001f48d',我收到此错误:

1366, "Incorrect string value: '\\xF0\\x9F\\x98\\x8A\\xF0\\x9F...' for column 'caption' at row 1"

我在网上搜索并阅读了很多答案,包括这些: MySQL utf8mb4, Errors when saving EmojisMySQL utf8mb4, Errors when saving Emojishttps://mathiasbynens.be/notes/mysql-utf8mb4#character-setshttp://www.java2s.com/Tutorial/MySQL/0080__Table/charactersetsystem.htm但没有任何效果!!

我有不同的问题:

这里是 mydb 信息:

mysql> SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';
+--------------------------+--------------------+
| Variable_name            | Value              |
+--------------------------+--------------------+
| character_set_client     | utf8mb4            |
| character_set_connection | utf8mb4            |
| character_set_database   | utf8mb4            |
| character_set_filesystem | binary             |
| character_set_results    | utf8mb4            |
| character_set_server     | utf8               |
| character_set_system     | utf8               |
| collation_connection     | utf8mb4_general_ci |
| collation_database       | utf8mb4_general_ci |
| collation_server         | utf8_general_ci    |
+--------------------------+--------------------+
10 rows in set (0.00 sec)

我试图通过

character_set_server 值更改为 utf8mb4
mysql>SET character_set_server = utf8mb4
Query OK, 0 rows affected (0.00 sec)

但是当重新启动 mysqld 时一切都会恢复!

我也没有任何/etc/my.cnf文件,我编辑了/etc/mysql/my.cnf文件。

我该怎么办? 如何将表情符号文件保存到我的数据库中?

最佳答案

源代码中的第 1 行或第 2 行(代码中的文字采用 utf8 编码:# -- coding: utf-8 --

您的列/表需要是 CHARACTER SET utf8mb4

python 包“MySQL-python”版本需要至少为 1.2.5 才能处理 utf8mb4。

self.query('SET NAMES utf8mb4') 可能是必需的。

Django 需要 client_encoding: 'UTF8' -- 我不知道那是否应该是 'utf8mb4`。

引用资料:
https://code.djangoproject.com/ticket/18392
http://mysql.rjweb.org/doc.php/charcoll#python

关于mysql - 在mysql数据库中保存表情符号字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36746990/

相关文章:

python - BeautifulSoup Prettify 在版权符号上失败

Java PDFBox - 阅读和修改带有特殊字符(变音符号)的 pdf

mysql - 如何更改mysql表中的记录位置?

Android 更新表中的行

mysql - 返回表中不存在的值

javascript - 用 pako(javascript 中的 zlib)压缩,用 zlib(python)解压不起作用

python - 为什么 locale.getpreferredencoding() 返回 'ANSI_X3.4-1968' 而不是 'UTF-8' ?

Mysql更新子查询的if条件如何

python - 为什么Python 2.x使用字符串格式化+unicode会抛出异常?

javascript - 如何使用 Vue.js 在 HTML 中显示 unicode/十六进制表情符号和八进制文字