【问题标题】:General error: 1366 Incorrect string value: '\xF0\x9F\x8D\xB8 !...'一般错误:1366 字符串值不正确:'\xF0\x9F\x8D\xB8 !...'
【发布时间】:2019-05-27 13:10:12
【问题描述】:

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

PDOException: SQLSTATE[HY000]: 一般错误: 1366 字符串不正确 value: '\xF0\x9F\x8D\xB8 !...' for column 'message' at row 1 in ...

我已经检查了以下问题:

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

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

【问题讨论】:

  • 当您打开与数据库的连接时,您是否会运行 SET NAMES utf8 之类的东西?如果是这样,请将其更改为SET NAMES utf8mb4

标签: php mysql sql pdo utf8mb4


【解决方案1】:

将您的列和表设置为 utf8mb4 很好,但是需要额外的设置才能使事情顺利进行:

PDO 连接:

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

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

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

【讨论】:

    猜你喜欢
    • 2018-05-05
    • 2013-12-23
    • 2012-11-19
    • 1970-01-01
    • 2020-02-20
    • 1970-01-01
    • 2016-03-13
    • 1970-01-01
    相关资源
    最近更新 更多