【发布时间】:2013-01-02 02:54:49
【问题描述】:
我有一个 iPhone 应用程序,我在其中通过 Web 服务将 UITextview 中的文本发送到服务器。在下一页中,我将通过 Web 服务显示来自服务器的 cmets 列表。一切正常,除非我在 UITextview 中插入表情符号/表情符号。
下一页显示方形框而不是一些表情符号字符(不是全部)。
我注意到:
工作:我从表情符号键盘在
UITextview中插入了一个表情符号字符,并将其代码打印在日志中,\u2601,并将此文本提交给服务器。在下一页中,我得到了相同的 unicode \u2601 并且工作正常。它显示了表情符号图标。不工作:现在我从表情符号键盘在
UITextview中插入了另一个表情符号字符,并将其代码打印在日志中,\ud83d\udc16,并将此文本提交给服务器。在下一页中,我得到了一个与我发送的不同的 unicode 代码点:\uf416。 iPhone 无法识别这个 unicode,所以它给了我一个方框。
那么这里的问题是什么?仅当表情符号字符具有一对 unicode 代码点时,它才起作用。
存储评论的数据库是 MySQL 5.5 版。
为什么从服务器检索表情符号字符代码对时会发生变化?如何将检索到的 Unicode 解码为其原始形式以便 iPhone 可以识别?
【问题讨论】:
-
字符 D800–DFFF 是surrogates。
-
你在 MySQL 中使用的是 utf8mb4 吗?
-
是的,我在 MySql 中使用 utf8mb4
-
使用utf8mb4有什么问题吗?
-
在使用 BASE64 保存之前,尝试使用写入 MySQL 数据库的表情符号对文本进行编码。当然,您必须在从数据库中获取后对其进行解码。检查此页面以获取 BASE64 编码/解码stackoverflow.com/questions/392464/…
标签: iphone mysql objective-c unicode emoji