【问题标题】:Emoji on MySQL and PHP: why some symbol yes other not?MySQL 和 PHP 上的表情符号:为什么有些符号是,有些不是?
【发布时间】:2012-04-26 13:36:46
【问题描述】:

在阅读了 SO 上有关表情符号的所有主题后,我一定会寻求帮助。 问题似乎几乎相同:我有一个 iPhone 应用程序通过 PHP 表情符号发送到 MySQL DB,我可以在记录上看到一些符号,例如“伞”和“云”,但其他不是(愤怒的脸、笑脸和其他)。

为什么有些是,有些不是?

  • MySQL 排序规则:utf8mb_unicode_ci
  • 表排序规则:utf8mb_unicode_ci
  • 字段、varchar、排序规则:utf8mb_unicode_ci

PHP 设置:

    mysql_query("SET CHARACTER SET utf8mb4");
    mysql_query("SET NAMES utf8mb4");

记录中未显示的符号显示为问号“?”

【问题讨论】:

    标签: php mysql emoji utf8mb4


    【解决方案1】:

    某些表情符号使用 3 个字节进行编码。如果您的计算机支持表情符号,这里是 3 字节的表情符号:

    ☺❤✨❕❔✊✌✋☝☀☔☁⛄⚡☎➿✂⚽⚾⛳♠♥♣♦〽☕⛪⛺⛲⛵✈⛽⚠♨1⃣2⃣3⃣4⃣5⃣6⃣7️⃣89⃣0️➆⬆▇▆✆➅⬆▆▆☆➅▶ ⏪⏩♿㊙㊗✳✴♈♉♊♋♌♍♎♏♐♑♒♓⛎⭕❌©®™

    其余的使用 4 个字节编码,除非您将 mysql 更新为 utf8mb4,否则将无法使用。听起来您没有以某种方式完全升级到 utf8mb4。

    【讨论】:

    • 非常感谢杰克,我会朝你的方向搜索。现在我很确定我以正确的排序规则转换了目标字段和表格,但我一定错过了一些东西。我会更新这个话题。谢谢
    • 我已经验证,你是对的,3 个字节的表情符号表示正常。我想念的是我需要更改排序规则的地方。我必须记录表情符号的字段有 utf8mb4_unicode_ci 排序规则。包含该字段的表具有 utf8mb4_unicode_ci 排序规则。在常规设置(phpMyAdmin)中,我看到 MySQL 排序规则是 utf8_general_ci,当我尝试更改为 utf8mb4_unicode_ci 时,它似乎会自动恢复到以前的设置。不知道问题是不是这个原因。我会继续寻找。
    • @Fabrizio 我写过a detailed guide on how to upgrade from utf8 to utf8mb4——也许它对你有帮助。
    • “utf8mb4”的最佳版本是什么?在 MySQL 中,utf8mb4 有很多选项,例如utf8mb4_binutf8mb4_general_ciutf8mb4_unicode_ciutf8mb4_roman_ci 等等。关于这些差异的任何想法/想法/建议可以帮助开发人员决定在 MySQL 数据库中存储表情符号的最佳选择?
    • 我现在只选择utf8mb4_general_ci,但我不知道有什么区别,所以如果我有更好的选择,请提供见解。
    猜你喜欢
    • 2017-03-21
    • 2018-09-12
    • 2018-06-20
    • 1970-01-01
    • 1970-01-01
    • 2015-03-30
    • 1970-01-01
    • 2020-07-09
    • 1970-01-01
    相关资源
    最近更新 更多