美文网首页
iOS 显示后台返回的 emoji

iOS 显示后台返回的 emoji

作者: HH思無邪 | 来源:发表于2019-07-05 11:54 被阅读0次
    屏幕快照 2019-07-05 上午11.35.37.png

    显示emoji 表情算是很普通的功能了,无论是发个文章,发表评论,有的昵称都要表情,能咋办呢?我才不会说我做不到呢?

    有必要讲一下,emoji在三端(安卓iOS后台)都有不同的处理方案,然而各顾各的肯定不行。我们是由后台统一对emoji表情进行unicode编码,然后存进数据库表里,所以iOS和安卓上传数据时不做任何处理,当然后台接受前台的未处理的emoji数据,它不处理存进数据库会报错的。

    看一下后台给我们返回的啥strContent

     --strContent--
    早上好!`\ud83d\udc8e`合家欢系列产品
    `\ud83c\udfc1`高品定制  只为您尊贵的你
    `\ud83c\udf81`全程0购物、不撤销、无必销
    ⚠提供自拍杆、矿泉水、充电宝
    `\ud83d\udd14`精选酒店 优选导游
    ☎️
    重庆西南旅行社
    

    抱着试一试的心情对它进行编码处理--strASCII--

    //编码
    +(NSString *)postNSNonLossyASCIIStringEncoding:(NSString *)strContent
    {
            NSData *jsonData = [strContent dataUsingEncoding:NSNonLossyASCIIStringEncoding];
            NSString *jsonContent = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
        return jsonContent;
    }
    
     --strASCII--\u65e9\u4e0a\u597d!\ue312\ue312`\\ud83d\\udc8e`\u5408\u5bb6\u6b22\u7cfb\u5217\u4ea7\u54c1
    `\\ud83c\\udfc1`\u9ad8\u54c1\u5b9a\u5236  \u53ea\u4e3a\u60a8\u5c0a\u8d35\u7684\u4f60
    `\\ud83c\\udf81`\u5168\u7a0b0\u8d2d\u7269\u3001\u4e0d\u64a4\u9500\u3001\u65e0\u5fc5\u9500
    \u26a0\u63d0\u4f9b\u81ea\u62cd\u6746\u3001\u77ff\u6cc9\u6c34\u3001\u5145\u7535\u5b9d
    `\\ud83d\\udd14`\u7cbe\u9009\u9152\u5e97 \u4f18\u9009\u5bfc\u6e38
    \u260e\ufe0f
    \u91cd\u5e86\u897f\u5357\u65c5\u884c\u793e
    

    ``包含的绿色部份是emoji表情编码,为了做转码前后对比
    对比后发现,比起初的表情编码多了个\,现在只要去除掉这个多余的\就可以统一解码显示出emoji了。

    来去掉这个\吧

    • 这个\是打印出来的,实际上是\,转义符都懂的😁,那就多了\
    1. 用\拆分成数组
    2. 去掉""也就是\\中间的空字符
    3. 再用\重组成字符串
      NSMutableArray *array = [NSMutableArray arrayWithArray:[strASCII componentsSeparatedByString:@"\\"]];
            for (int i=0; i<[array count]; i++) {
                NSString *str=[array objectAtIndex:i];
                if ([str isEqualToString:@""""]) {
                    [array removeObjectAtIndex:i];
                }
            }
            NSString *string = [array componentsJoinedByString:@"\\"];
    

    最后解码

    jsonString = [strContent==nil?@"":[NSString stringWithFormat:@"\\%@",string] UTF8String];
     NSData *jsonData = [NSData dataWithBytes:jsonString length:strlen(jsonString)];
                NSString *jsonContent= [[NSString alloc] initWithData:jsonData encoding:NSNonLossyASCIIStringEncoding];
                NSString *ASContent=[NSString stringWithFormat:@"%@",jsonContent==nil?strContent:jsonContent];
    

    相关文章

      网友评论

          本文标题:iOS 显示后台返回的 emoji

          本文链接:https://www.haomeiwen.com/subject/vhtshctx.html