MySQL 处理 utf8mb4_unicode_ci 的 unicode 文本

标签 mysql unicode emoji

尝试向表中插入字符串时出现以下错误。

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,但默认情况下是这样,而且仍然如此。

enter image description here

我还应该改变什么?

最佳答案

连接后您应该立即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/

相关文章:

reactjs - 提及列表和表情符号顶部位置(Draft.js)

php - 如何在 symfony yml 配置文件中从 docker 获取环境变量

java - Spring Boot 连接到 AWS RDS MySQL - SSLHandshakeException : Received fatal alert: unknown_ca

python - 扫描文件夹时出现各种错误

unicode - 什么 Unicode 字符代表 "time"?

ios - NSString 到 Emoji Unicode

ios - 特殊表情符号无法在设备中正确显示

MySQL - 行过滤器复制

python - Turbogears2 与 MySQL 数据库不更新多线程中的表

java - 在 unix/linux 中工作的 java 中将 unicode 字符串转换为 ASCII