尝试向表中插入字符串时出现以下错误。
Error: ER_TRUNCATED_WRONG_VALUE_FOR_FIELD: Incorrect string value: '\xF0\x9F\x98\x8D...' for column 'preview_text' at row 1
\xF0\x9F\x98\x8D 是笑脸表情符号😍
正如我从之前的 stackoverflow 问题中了解到的,我需要将排序规则设置为 utf8mb4_unicode_ci
,但默认情况下是这样,而且仍然如此。
我还应该改变什么?
最佳答案
连接后您应该立即define the charset像这样:
SET NAMES 'utf8mb4';
通常你会在你的客户端中有一个选项来设置它(比查询更优雅),例如: 节点:
mysql.createPool({
...
charset : 'utf8mb4'
});
还有PHP的MySQLi
$mysqli->set_charset("utf8mb4");
关于MySQL 处理 utf8mb4_unicode_ci 的 unicode 文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53751977/