将 Unicode 笑脸转换为 nsstring ios

Posted

技术标签:

【中文标题】将 Unicode 笑脸转换为 nsstring ios【英文标题】:Convert Unicode smiley to nsstring ios 【发布时间】:2014-05-02 11:08:13 【问题描述】:

我正在开发聊天应用程序。我想添加对笑脸的支持。我可以使用像\ue415 这样的unicode 在ios 中直接显示笑脸:-)。当我使用此 unicode 字符串发送消息时,另一方收到的是 之类的方形框。如何将 unicode 字符转换为 nsstring。

我在下面的集合视图中使用情感

代码:

data = [NSArray arrayWithObjects:@"\ue415",@"\ue056",@"\ue057",@"\ue414",@"\ue405",@"\ue106",@"\ue418",@"\ue417",@"\ue40d",@"\ue40a",@"\ue404",@"\ue105",@"\ue409",@"\ue40e",@"\ue402",@"\ue108",@"\ue403",@"\ue058",@"\ue407",@"\ue401",@"\ue40f",@"\ue40b",@"\ue406",@"\ue413",@"\ue411",@"\ue412",@"\ue410",@"\ue107",@"\ue059",@"\ue416",@"\ue408",@"\ue40c",@"\ue11a",@"\ue10c",@"\ue32c",@"\ue32a",@"\ue32d",@"\ue328",@"\ue32b",@"\ue022",@"\ue023",nil];

CollectionView 委托方法

-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath

    static NSString *CellIdentifier = @"EmojiCell";

    UICollectionViewCell *cell =[collectionView dequeueReusableCellWithReuseIdentifier:CellIdentifier forIndexPath:indexPath];
    cell.backgroundColor = [UIColor grayColor];

    UILabel *lable = (UILabel *)[cell viewWithTag:100];

    lable.text = [data objectAtIndex:indexPath.row];

    return cell;


- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath

    messageField.text = [NSString stringWithFormat:@"%@%@",messageField.text,[data objectAtIndex:indexPath.row]];

发送消息的代码

NSString *messageStr = self.messageField.text ;

    if([messageStr length] > 0) 

        NSXMLElement *body = [NSXMLElement elementWithName:@"body"];
        [body setStringValue: messageStr];

        XMPPJID *jid = [XMPPJID jidWithString:chatWithUser];

        NSXMLElement *message = [NSXMLElement elementWithName:@"message"];
        [message addAttributeWithName:@"type" stringValue:@"chat"];
        [message addAttributeWithName:@"to" stringValue:[jid full]];
        [message addChild:body];

        [self.xmppStream sendElement:message];
    

【问题讨论】:

“另一面”也是你的应用吗? 另一边我正在使用 mac 消息应用程序。 好的,那么你如何格式化你发送的消息(在这里查看代码会很有用)。 @Drppy 请查看已编辑的问题 【参考方案1】:

只需更改符号代码。

unichar symbolCode = 0xf086;
NSString *chatIcon =[NSString stringWithCharacters:&symbolCode length:1];

为您编辑:

unichar symbolCode = 0xE415;
NSString *smile =[NSString stringWithCharacters:&symbolCode length:1];
NSLog(@"%@",smile);
UILabel *lab = [[UILabel alloc] initWithFrame:CGRectMake(10, 20, 100, 50)];
lab.text = smile;
[self.view addSubview:lab];

【讨论】:

我在日志中打印 chatIcon 值。它显示方形框 感谢您的回答,但在 iOS 中显示笑脸不是我的问题,我可以直接在 iOS 中显示笑脸,例如 lab.text = @"\ue415"

以上是关于将 Unicode 笑脸转换为 nsstring ios的主要内容,如果未能解决你的问题,请参考以下文章

如何在 PHP 中从 Unicode 转换表情符号?

如何将unicode转换为字符串?

将NSString转换为UTF32和从UTF32转换

在 Web 上显示 iOS emoji unicode 字符

unicode 转换成中文

将 NSData 转换为 NSString 后如何将 NSString 转换回 NSData?