Objective c iOS 5:如何将表情符号转换为unicode字符?

Objective c iOS 5:如何将表情符号转换为unicode字符?,objective-c,ios5,emoji,nsstringencoding,Objective C,Ios5,Emoji,Nsstringencoding,我想在iOS 5中将表情符号转换为unicode字符 例如,转换为\ue415 我在中访问了NSStringEncoding 在iOS 4中,NSUTF16BigEndianStringEncoding和NSUTF32BigEndianStringEncoding分别给了我和,这两种编码与我想要的非常接近 在iOS 5中,结果是不同的。它有和 如何在iOS 5中获取的\ue415?谢谢。\ue415是传统表情符号编码的一部分,特定于某些日本运营商。软银、NTT和docomo都有自己的私人表情字符

我想在iOS 5中将表情符号转换为unicode字符

例如,转换为
\ue415

我在中访问了NSStringEncoding

在iOS 4中,
NSUTF16BigEndianStringEncoding
NSUTF32BigEndianStringEncoding
分别给了我
,这两种编码与我想要的非常接近

在iOS 5中,结果是不同的。它有


如何在iOS 5中获取的
\ue415
?谢谢。

\ue415
是传统表情符号编码的一部分,特定于某些日本运营商。软银、NTT和docomo都有自己的私人表情字符集

iOS 5已经转移到新指定的Unicode 6.0支持表情符号字符平面,并且
是该字符的Unicode码点。wikipedia中关于这一点的条目引用了一个EmojiSources.txt映射文件,如果您确实需要获取旧的专用字符代码,则需要使用该文件自己进行映射

试试这个:


在iOS 5上,使用左代码,在iOS 4及以下版本上,使用右代码。

如果您的表情符号没有往返(从iOS到后端服务器再回到iOS),那么您不应该有任何问题iOS(至少4.2+)正确处理编码,您不必做任何事情。但如果你的应用程序与服务器交互,你是否怀疑你的服务器返回值是错误的?i、 e.json编码错误

我也有同样的问题,在挖掘了几个小时后,终于找到了这个对我有用的答案:

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

Postegre正确地存储代码,仅当您将json响应发送回ios客户端时,假设您呈现json:@message,json编码就有问题

您可以通过在控制台中执行简单的测试来测试rails控制台中是否存在json编码问题

test = {"smiley"=>"u{1f604}"} 
test.to_json

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

请尝试以下操作:

  • 将表情符号转换为unicode

    NSData *data = [strEmo dataUsingEncoding:NSNonLossyASCIIStringEncoding];
    NSString *goodValue = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
    
  • 非常容易将unicode转换为表情符号

    NSData *data = [strEmo dataUsingEncoding:NSUTF8StringEncoding];
    NSString *goodValue = [[NSString alloc] initWithData:data encoding:NSNonLossyASCIIStringEncoding]; 
    
  • 转换回:--


    在UILabel中显示表情符号:

    NSString *bellEmojiString = @"U+1F514";
    
    label.text = [NSSting stringWithFormat:@"Table: %@", @"\U0001F514"];
    

    您应该小心地将
    +
    替换为3
    数字

    是的,我想使用Emoji的传统编码,因为我的应用程序似乎无法与新的unicode 6.0兼容,它可以读取
    \ue415
    ,但不能读取
    \U0001f604
    。您能告诉我如何使用您提供的EmojiSources.txt映射文件吗?另一个1是此解决方案以及@yadav的解决方案在所有iOS版本中都非常有效。但我有一个特定的要求,必须将字符串存储在服务器上并允许字符串搜索。在这种情况下,不应将非表情符号编码到“\u…”中,这使得整个字符串不可读取,也不可搜索。有没有一种方法可以只对非表情符号的角色进行转换?唯一能帮我实现转换的方法。。。作为一个范畴,它是完美的。谢谢您好,我一直在研究这个解决方案,似乎可以使用ios。但我想知道如何将这些unicode转换为java中的表情符号,反之亦然,如何在iOS和Android中管理上述表情符号代码?我必须在iOS和Android中提供支持,反之亦然。@NimitPattanasri,在转换为unicode后,搜索是可能的,但unicode字符将被搜索。
    NSString *bellEmojiString = @"U+1F514";
    
    label.text = [NSSting stringWithFormat:@"Table: %@", @"\U0001F514"];