一般错误:1366 错误的字符串值:'\xF0\x9F\x8D\xB8 !...'

问题描述 投票:0回答:1

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

PDOException:SQLSTATE [HY000]:一般错误:1366 字符串不正确 值: '\xF0\x9F\x8D\xB8 !...' 对于 ... 中第 1 行的“消息”列

我已经检查了以下问题:

前面的所有问题都提出了相同的答案:将表格更改为

utf8mb4
排版。这就是我所做的:我将表格和相关列更改为
utf8mb4_unicode_ci

但是问题仍然出现。有什么想法吗?

php mysql sql pdo utf8mb4
1个回答
14
投票

将列和表设置为 utf8mb4 很好,但是需要其他设置才能顺利工作:

PDO 连接:

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

连接之后、运行查询之前运行的 SQL 顺序:

$conn->exec("set names utf8mb4");
© www.soinside.com 2019 - 2024. All rights reserved.