常见错误:1366 不正确的字符串值:'\xF0\x9F\x8D\xB8 !...'

5
当用户发送包含表情符号的消息时(准确地说,当消息存储在MySql数据库中时),会出现以下错误:
PDOException: SQLSTATE [HY000]: General error: 1366列'message'的值不正确,在第1行:'\xF0\x9F\x8D\xB8 !...'。
我已经检查了以下问题: 所有之前的问题都提出了同样的答案:将表格更改为utf8mb4字集。这就是我所做的:我将我的表格和相关列更改为utf8mb4_unicode_ci
但问题仍然存在。有什么想法吗?

1
当您打开与数据库的连接时,是否偶然运行了类似于 SET NAMES utf8 的命令?如果是这样,请将其更改为 SET NAMES utf8mb4 - Alon Eitan
1个回答

14

将您的列和表设置为utf8mb4是可以的,但是还需要进行其他设置才能使事情顺利运行:

PDO连接:

$dsn = 'mysql:host=my_ip;dbname=my_db;charset=utf8mb4';

连接数据库后,在运行查询之前运行的 SQL 排序:

$conn->exec("set names utf8mb4");

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接