如何将旧的表情符号编码转换为iOS5中的最新编码?

时间:2011-10-22 01:09:34

标签: iphone ios unicode encoding emoji

遗憾的是,在iOS5终于发布后,我收到了用户的报告,说他们无法登录。

因为名字中有表情符号,苹果改变了表情符号的编码。

所以用户名包含旧版的表情符号,我怎么能将它们转换为新的编码?

谢谢!

具体:一个表情符号“tiger”,在iOS5中是“\ U0001f42f”,但在早期的iOS版本中是“\ ue050”。

2 个答案:

答案 0 :(得分:2)

我有同样的问题,经过几个小时的挖掘后终于找到了适合我的this answer

如果您使用rails作为服务器,这就是您需要做的。无需在ios / xcode中执行任何操作,只需传递NSString,而无需对服务器执行任何UTF8 / 16编码。

Postegre正确存储代码,就在你将json响应发送回ios客户端时,假设你渲染json:@message,json编码有问题。

您可以通过在控制台中进行简单测试来测试您的rails控制台中是否存在json编码问题 test = {“smiley”=>“u {1f604}”} test.to_json

如果打印出“{\”smiley \“:\”\ uf604 \“}”(注意1丢失了),那么你有这个问题。并且链接中的补丁将修复它。

答案 1 :(得分:1)

iOS 5和OS X 10.7(Lion)使用Unicode 6.0标准的“统一”代码点作为表情符号。

SoftBank iPhone上的iOS 4在Unicode专用区域中使用了一组非官方代码点,因此与任何其他系统都不兼容。要将此格式转换为正确的Unicode 6.0字符,您需要在软件代码中运行一个大的查找表,以便在提交时对所有当前数据和所有新表单数据进行统一。此时您可能还想进行Unicode规范化,例如。全角字母匹配普通的ASCII字母。

请参阅为PHP执行表情符号转换任务的库中的this table

用户名中的表情符号? enter image description here