General error: 1366 Incorrect string value: '\xF0\x9F\x8D\xB8 !...'

General error: 1366 Incorrect string value: '\xF0\x9F\x8D\xB8 !...'

当用户发送包含表情符号的消息时出现以下错误(准确地说,当消息存储在 MySql 数据库中时):

PDOException: SQLSTATE[HY000]: General error: 1366 Incorrect string value: '\xF0\x9F\x8D\xB8 !...' for column 'message' at row 1 in ...

我已经检查了以下问题:

前面的所有问题都提出了相同的答案:将 table 更改为 utf8mb4 排版。这就是我所做的:我将 table 和相关列更改为 utf8mb4_unicode_ci.

但是问题还是出现了。有什么想法吗?

将您的列和 table 设置为 utf8mb4 没问题,但是需要额外的设置才能顺利进行:

PDO 连接:

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

SQL 在连接之后和 运行ning 查询之前 运行 命令:

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