9

我们正在开发一个 iPhone 应用程序,它将表情符号从 iPhone 发送到服务器端 PHP 并插入到 MySQL 表中。我正在做服务器端的工作。

但是插入语句执行成功后,插入的值变为空白。
我可以正确插入字段(varchar)的是文本,但是一旦包含表情符号,
就可以插入文本并且表情符号会被自动剪切。

有人给我建议将字段类型设置为博客,以便它可以存储图像数据。
但是插入的值并不总是包括表情符号大小写,并且大小很小。

*我正在使用 mysql_real_escape_string 插入值。

4

2 回答 2

23

大多数 iOS 表情符号使用高于 Unicode 表的基本多语言平面的代码点。例如,(张开嘴和微笑眼睛的笑脸)位于 U+1F604。

OS X 字符查看器

现在,请参阅http://dev.mysql.com/doc/refman/5.5/en/charset-unicode.html

MySQL 5.5 之前的版本只支持 BMP 的 UTF-8,其中包括 U+0000 和 U+FFFF 之间的字符(即只是实际 UTF-8 的子集;MySQLutf8不是真正的 UTF-8)。它不能将字符存储在代码点 U+1F604 或其他类似的“高字符”。MySQL 5.5+ 支持utf8mb4(实际的 UTF-8)utf16utf32,它们能够对这些字符进行编码。如果您使用的是 MySQL 5.5+,请使用这些列字符集之一,并确保您使用相同的字符集进行与 PHP 的连接编码。如果您在 MySQL < 5.5 上,则必须使用BLOB列类型。该类型存储原始字节而不关心其中的“字符”。缺点是您将无法有效地搜索或索引文本。

于 2012-03-01T02:27:24.337 回答
2

一些表情符号字符适用于较旧的非斑点 mysql 配置,因为它们使用 3 字节代码点进行编码,并且 mysql 可以存储 3 字节字符。如果由于某种原因无法升级 mysql 或使用 blob,则可以清除 4 字节代码点并保留 3 字节代码点。

如果您的计算机具有表情符号功能,以下是 3 字节 iOS 表情符号字符的列表:

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

于 2012-05-02T15:32:45.493 回答