Emoji на MySQL и PHP: почему одни символы да другие нет?

После прочтения всех тем о смайликах на SO я ограничен, чтобы попросить некоторую помощь. Вопрос, кажется, почти тот же: я получил приложение для iPhone, отправляющее через PHP emoji в MySQL DB, я могу видеть некоторые символы в записях, например, "зонтик" и "облако", но другие нет (сердитое лицо, улыбающееся лицо и другие).).

Почему одни да, а другие нет?

  • MySQL Collation: utf8mb_unicode_ci
  • Сортировка таблицы: utf8mb_unicode_ci
  • Поле, varchar, сопоставление: utf8mb_unicode_ci

Настройка PHP:

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

Символы, не показанные внутри записи, отмечены знаком вопроса?

1 ответ

Некоторые смайлики кодируются с использованием 3 байтов. Если ваш компьютер поддерживает Emoji, вот 3-х байт Emoji:

☺❤✨❕❔✊✌✋☝☀☔☁⛄⚡☎➿✂⚽⚾⛳ ♠ ♥ ♣ ♦ 〽☕⛪⛺⛲⛵✈⛽⚠♨1⃣2⃣3⃣4⃣5⃣6⃣7⃣8⃣9⃣0⃣ # ⃣⬆⬇⬅➡↗↖↘↙ ◀ ▶ ⏪⏩♿ ㊙㊗✳✴♈♉♊♋♌♍♎♏♐♑♒♓⛎⭕❌ © ® ™

Остальные кодируются с использованием 4 байтов и не будут работать, если вы не обновите mysql до utf8mb4. Похоже, вы каким-то образом не полностью обновились до utf8mb4.

Другие вопросы по тегам