代码之家  ›  专栏  ›  技术社区  ›  Fifi

常规错误:1366错误的字符串值:“\xf0\x9f\x8d\xb8!”……

  •  0
  • Fifi  · 技术社区  · 6 年前

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

    pdoException:sqlstate[hy000]:常规错误:1366字符串不正确 值:“\xf0\x9f\x8d\xb8!”…'用于第1行中的列'message'…

    我已经检查了以下问题:

    前面所有的问题都给出了相同的答案:将表改为 utf8mb4 排版。这就是我所做的:我把我的桌子和相关栏目改成 utf8mb4_unicode_ci .

    但问题仍然存在。有什么想法吗?

    1 回复  |  直到 6 年前
        1
  •  1
  •   GMB    6 年前

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

    PDO连接:

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

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

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