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

Pro*_*ole 27 objective-c emoji ios5 nsstringencoding

我想在iOS 5中将表情符号转换为unicode角色.

例如,转换 张开嘴和冷汗的笑脸\ue415.

我去NSStringEncodingNSString类参考.

在iOS 4的,NSUTF16BigEndianStringEncodingNSUTF32BigEndianStringEncoding给了我<e415><0000e415>分别,这是相当接近我想要的东西.

在iOS 5中,结果不同.它咆哮<d83dde04>而且<0001f604>.

我怎样才能得到\ue415张开嘴和冷汗的笑脸在iOS 5?谢谢.

小智 91

请试试这个:

  1. 将表情符号转换为unicode

    NSData *data = [strEmo dataUsingEncoding:NSNonLossyASCIIStringEncoding];
    NSString *goodValue = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
    
    Run Code Online (Sandbox Code Playgroud)
  2. 很容易将unicode转换为表情符号

    NSData *data = [strEmo dataUsingEncoding:NSUTF8StringEncoding];
    NSString *goodValue = [[NSString alloc] initWithData:data encoding:NSNonLossyASCIIStringEncoding]; 
    
    Run Code Online (Sandbox Code Playgroud)

  • 你怎么能以正确的格式显示表情符号? (2认同)

Ash*_*ark 14

\ue415是表情符号的遗留编码的一部分,并且特定于某些日本运营商.SoftBank,NTT和docomo都有自己的私人表情符号字符集.

iOS 5已移至新指定的表情符号字符平面的Unicode 6.0支持,并且<0001f604> 该字符的Unicode代码点.关于这个的维基百科条目引用了一个EmojiSources.txt映射文件,如果你真的需要获取旧的私有用字符代码,你需要使用它来自己进行映射.

http://en.wikipedia.org/wiki/Emoji


Has*_*jmi 8

在UILabel中表达不同的表情符号:

NSString *bellEmojiString = @"U+1F514";

label.text = [NSSting stringWithFormat:@"Table: %@", @"\U0001F514"];
Run Code Online (Sandbox Code Playgroud)

你应该小心+用3 zero位数替换


小智 7

转换回: -

NSData *newdata=[recievedstring dataUsingEncoding:NSUTF8StringEncoding 
allowLossyConversion:YES];
    NSString *mystring=[[NSString alloc] initWithData:newdata encoding:NSNonLossyASCIIStringEncoding];
Run Code Online (Sandbox Code Playgroud)


use*_*412 6

试试这个:http://opensource.apple.com/source/ICU/ICU-461.13/icuSources/data/translit/Any_SoftbankSMS.txt

在iOS5上,使用左侧代码,在iOS 4及更低版本上,使用正确的代码.