当用户发送包含emoji的消息时(确切地说,当消息存储在MySql数据库中时),将出现以下错误:
PDOException:SQLSTATE[HY000]:常规错误:1366字符串不正确
值:'\xF0\x9F\x8D\xB8!“…”表示第1行的列“消息”。。。
我已经检查了以下问题:
PyMySQL Warning: (1366, "Incorrect string value: '\\xF0\\x9F\\x98\\x8D t...')
java.sql.SQLException: Incorrect string value: '\xF0\x9F\x91\xBD\xF0\x9F...'
ERROR 1366 (HY000): Incorrect string value: '\xF0\x9F\x98\x9C' for column 'comment' at row 1
Incorrect string value: '\xF0\x9F\x8E\xB6\xF0\x9F...' MySQL
前面的所有问题都给出了相同的答案:将表改为
utf8mb4排版。这就是我所做的:我将表和相关列更改为utf8mb4_unicode_ci
但问题仍然存在。知道吗?

最佳答案

将列和表设置为utf8mb4是可以的,但是要使工作顺利进行,还需要其他设置:
PDO连接:

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

连接后和运行查询之前要运行的SQL顺序:
$conn->exec("set names utf8mb4");

关于mysql - 一般错误:1366错误的字符串值:'\xF0\x9F\x8D\xB8!…',我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53980040/

10-11 01:54