常规错误:1366不正确的字符串值:'\xf0\x9f\x8d\xb8!…'

aij0ehis  于 2021-06-17  发布在  Mysql
关注(0)|答案(1)|浏览(278)

当用户发送包含emoji的消息时(确切地说,当消息存储在mysql数据库中时),会出现以下错误:
pdoexception:sqlstate[hy000]:常规错误:1366不正确的字符串值:'\xf0\x9f\x8d\xb8!…'对于中第1行的“message”列。。。
我已经检查了以下问题:
pymysql警告:(1366,“不正确的字符串值:'\xf0\x9f\x98\x8d t…')
java.sql.sqlexception:字符串值不正确:'\xf0\x9f\x91\xbd\xf0\x9f…'
错误1366(hy000):第1行“comment”列的字符串值“\xf0\x9f\x98\x9c”不正确
字符串值不正确:'\xf0\x9f\x8e\xb6\xf0\x9f…'mysql
前面的所有问题都给出了相同的答案:将表改为 utf8mb4 排版。我就是这么做的:我把我的表和相关列改为 utf8mb4_unicode_ci .
但问题仍然存在。你知道吗?

esyap4oy

esyap4oy1#

将列和表设置为utf8mb4是可以的,但是需要其他设置才能顺利工作:
pdo连接:

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

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

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

相关问题