【发布时间】:2014-12-16 21:27:01
【问题描述】:
我正在为iOS 开发一个聊天应用程序,我正在尝试将聊天文本存储在MySQL 数据库中。普通文本可以正常工作,即使是像德语“变音符号”这样的特殊字符。我将文本作为 Json 发送到服务器。
如果我使用 iOS 表情符号键盘中的表情符号不起作用,如下所示:
{"userid":"1","message":"Test 123 ⚽️❤️????????????????????????"}
我首先将MySQL 数据库表设置为UTF-8。结果是字符:"Test 123 ⚽️❤️" 被存储,而其他表情符号被截断。我必须补充一下,我在PHP 日志中看到了上面的完整字符串,所以PHP 没有正确接收它似乎不是问题。这是它在 php 日志中的样子:
INFO - 2014-12-16 22:25:04 --> New Feed Post. Json: {"userid":"1","message":"Djjdhd????????????????????????????????????????"}
问题是MySQL 没有正确存储它。我将整个数据库更改为UTF-16 甚至UTF-32,因为我认为这些字符不在UTF-8 范围内,而是在UTF-16 范围内。
结果是表情符号还没有被截断,而是在数据库中显示为问号,如下所示:
"Test 123 ⚽️❤️????????????"
知道为什么这些表情符号没有正确存储吗?
我看到了这篇文章 (iPhone emoticons insert into MySQL but become blank value),但似乎 PHP 正确接收了它。
谢谢!
【问题讨论】:
-
您需要确保通过整个渲染管道使用相同的字符集。你忘记了某事,某处,例如php->mysql 连接。
-
啊谢谢!在数据库配置文件中将 CodeIgniter 设置为 UTF-8。我将其设置为 UTF-16 并且可以正常工作。谢谢马克,第二个帖子是正确的答案!
标签: php ios mysql objective-c utf-8