6

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

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

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

谢谢!

具体来说:一个表情符号“老虎”,在iOS5中为“\U0001f42f”,在iOS早期版本为“\ue050”。

4

2 回答 2

2

我遇到了同样的问题,经过几个小时的挖掘,终于找到了适合我的答案

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

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

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

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

于 2012-06-04T00:08:07.070 回答
2

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

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

例如,请参见为 PHP 执行表情符号转换任务的库中的此表

用户名中的表情符号?在此处输入图像描述

于 2011-10-22T13:36:59.257 回答