首页  >  文章  >  数据库  >  为什么我的表情符号在 MySQL 中消失了?

为什么我的表情符号在 MySQL 中消失了?

DDD
DDD原创
2024-11-06 20:25:02328浏览

Why are my Emojis Disappearing in MySQL?

MySQL 字符编码和表情符号存储

我们有一个 iPhone 应用程序,它将表情符号传输到 PHP 后端,然后将它们插入 MySQL数据库。然而,插入成功后,存储的值显示为空白。

纯文本插入成功,但当包含表情符号时,仅插入文本。由于偶尔插入非表情符号且存储需求较小,建议将字段类型更改为 Blog(以容纳图像数据),结果证明不适合。

解决方案:MySQL 字符集兼容性

问题出在MySQL的字符编码上。 iOS 表情符号主要利用超过 Unicode 表的基本多语言平面 (BMP) 的代码点。例如,“张开嘴巴微笑着眼睛的笑脸”表情符号位于 U 1F604。

5.5 之前的 MySQL 版本仅支持 UTF-8 的 BMP,限制存储为 U FFFF 下的字符。因此,MySQL 无法存储 U 1F604 表情符号或其他“高字符”。

要解决此问题,请使用 MySQL 5.5 并选择 utf8mb4(正宗 UTF-8)、utf16 或 utf32 作为列字符集。此外,请确保 PHP 和数据库之间的 MySQL 连接使用相同的字符集。

对于低于 5.5 的 MySQL 版本,请使用 BLOB 列类型,该类型存储原始字节而不考虑“字符”。虽然这允许表情符号存储,但它会损害文本搜索和索引效率。

以上是为什么我的表情符号在 MySQL 中消失了?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn