Смайлики 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⃣ # ⃣⬆⬇⬅➡↗↖↘↙ ◀ ▶ ⏪⏩♿㊙㊗✳✴♈♉♊♋♌♍♎♏♐♑♒♓⛎⭕❌ © ® ™