Смайлики iPhone вставляются в MySQL, но становятся пустым значением

Мы разрабатываем приложение для iPhone, которое будет отправлять смайлики с iPhone на серверный PHP и вставлять в таблицы MySQL. Я выполняю работу на стороне сервера.

Но после успешного выполнения инструкции insert, вставленное значение станет пустым.
То, что я мог правильно вставить в поле (varchar), - это текст, но однажды включив смайлики,
просто текст может быть вставлен, и смайлики будут автоматически разрезаны.

Кто-нибудь дает мне совет о настройке типа поля в блоге, чтобы он мог хранить данные изображения.
Но вставленное значение не всегда включает в себя смайлики, а размер невелик.

* Я использую mysql_real_escape_string для вставки значения.

Ответ 1

Большинство iOS emojis используют коды над базовой многоязычной плоскостью в таблице Unicode. Например, 😄 (СМОТРЕТЬ ЛИСТЬЮ С ОТКРЫТЫМ РИТОМ И СМОТРЕТЬЮ ГЛАЗАМИ) находится в U + 1F604.

OS X character viewer

Теперь см. http://dev.mysql.com/doc/refman/5.5/en/charset-unicode.html.

MySQL до версии 5.5 поддерживает только UTF-8 для BMP, который включает символы между U + 0000 и U + FFFF (т.е. только подмножество фактического UTF-8, MySQL utf8 не является реальным UTF-8). Он не может хранить символ в кодовой точке U + 1F604 или других подобных "высоких символах". MySQL 5.5+ поддерживает utf8mb4 (фактический UTF-8), utf16 и utf32, которые могут кодировать эти символы. Если вы используете MySQL 5.5+, используйте один из этих наборов символов столбца и убедитесь, что вы используете одну и ту же кодировку для кодировки соединения с PHP. Если вы находитесь в MySQL < 5.5, вам придется использовать тип столбца BLOB. Этот тип хранит необработанные байты, не заботясь о "персонажах" в нем. Недостатком является то, что вы не сможете эффективно искать или индексировать текст.

Ответ 2

Некоторые из символов emoji работают со старыми не-blobed конфигурациями mysql, потому что они закодированы с использованием 3-байтового кода, а mysql может хранить 3-байтовый символ. Если вы не можете обновить mysql и не использовать капли по какой-либо причине, вы можете очистить 4 байта кодовых точек и сохранить 3 байта.

Если ваш компьютер обладает возможностями emoji, вот список трехбайтовых символов iOS emoji:

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