可悲的是,在 iOS5 终于发布后,我收到用户的报告,他们无法登录。
因为名字中有表情符号,苹果改变了表情符号的编码。
所以用户名包含旧版本的表情符号,我怎样才能将它们转换为新的编码?
谢谢!
具体来说:一个表情符号“老虎”,在iOS5中为“\U0001f42f”,在iOS早期版本为“\ue050”。
我遇到了同样的问题,经过几个小时的挖掘,终于找到了适合我的答案
如果你使用 rails 作为你的服务器,这就是你需要做的。无需在 ios/xcode 中执行任何操作,只需将 NSString 传递给服务器,无需执行任何 UTF8/16 编码。
Postegre 正确存储代码,只是当您将 json 响应发送回 ios 客户端时,假设您渲染 json:@message,json 编码有问题。
您可以通过在控制台 test = {"smiley"=>"u{1f604}"} test.to_json 中进行简单测试来测试您的 Rails 控制台中是否存在 json 编码问题
如果它打印出 "{\"smiley\":\"\uf604\"}" (注意 1 丢失了),那么你有这个问题。链接中的补丁将修复它。
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 执行表情符号转换任务的库中的此表。
用户名中的表情符号?