iPhone表情符号插入MySQL,但成为空白的价值
我们正在开发一个iPhone应用程序,将从iPhone的表情符号发送到服务器端PHP并插入到MySQL表中。 我正在做服务器端的工作。
但插入语句执行成功后,插入的值变为空白。
我可以正确插入字段(varchar)的是文本,但是一旦包含表情符号,
只要文本可以插入,表情符号会自动切割。
有人给我build议将字段types设置为博客,以便它可以存储图像数据。
但插入的值并不总是包含表情符号和大小是小的。
*我正在使用mysql_real_escape_string来插入值。
大多数iOS emojis使用Unicode表的基本多语言平面以上的代码点。 例如,😄(SMILING FACE WITH OPEN MOUTH和SMILING EYES)在U + 1F604。
现在看http://dev.mysql.com/doc/refman/5.5/en/charset-unicode.html 。
5.5之前的MySQL只支持BMP的UTF-8,其中包括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
列types。 该types存储原始字节而不关心其中的“字符”。 缺点是你不能有效地search或索引文本。
一些表情符号字符适用于较旧的非blob的mysqlconfiguration,因为它们使用3字节的代码点进行编码,而mysql可以存储3字节的字符。 如果你不能升级mysql,也不pipe用什么原因使用blob,你可以擦掉4个字节的代码点,并保留3个字节的代码点。
如果您的电脑具有表情符号function,下面是一个3字节的iOS表情符号字符列表:
☺❤✨❕❔✊✌✋☝☀☔☁⛄⚡☎➿✂⚽⚾⛳♠♥♣♦〽☕⛪⛺⛲⛵✈⛽⚠♨1⃣2⃣3⃣4⃣5⃣6⃣7⃣8⃣9⃣0⃣#⃣⬆⬇⬅➡↗↖↘↙◀▶⏪⏩♿ ㊙㊗✳✴♈♉♊♋♌♍♎♏♐♑♒♓⛎⭕❌©®™