iOS 显示后台返回的 emoji

2019-07-05  本文已影响0人  HH思無邪
屏幕快照 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];
上一篇下一篇

猜你喜欢

热点阅读