评论中发emoji表情 iOS

原创 2016年08月29日 18:34:34

最近项目中有个新需求——在评论中发表情。

之前以为这个是不用做什么处理的,因为表情可以直接在UILabel上显示。然而显示并不是我所想象的这样,因为后台并不能识别客户端上传的表情符号。

iOS中的表情符号是emoji表情,需要将表情符号进行转换,后台才能识别。识别方法:


NSString * str1 = [str stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; (iOS 9后被另一个方法替换

NSString * str1 =  [str stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet characterSetWithCharactersInString:@"`#%^{}\"[]|\\<> "].invertedSet];

)

如果str字符串中包含表情符号,转换后的str1就能被后台所识别。此时的str1是一串字符,而没有了所谓的表情符号。如果将str1显示在UILabel上,同样是一串字符。


我们给后台上传的是Hahh%F0%9F%98%85这样的字符串,同样发回给我们的也是Hahh%F0%9F%98%85

那么问题来了,我们要怎样识别这些表情字符,并将表情显示出来?这时就需要我们使用另一个方法,将表情符号识别并显示出来了。

方法:

 NSString * str2 = [str1  stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

    NSLog(@"%@", str2);iOS9之后被另一个方法替换:

NSString * str2 = [str1 stringByRemovingPercentEncoding];


只要使用了以上两个方法我们就能实现发表emoji表情的功能了。

说实话,之前为了解决这个问题,我绕了很多弯路,网上查、群里问、找大神,最终终于是解决了。写这篇博客就是为了让大家少走弯路,将时间用在更多的技术上。


2017.4.4增加:

最近在面试的时候面试官提到了这个问题,我的回答并不是很让面试官满意。面试官说这样会有一个问题,就是iOS系统的一些emoji表情并不能被安卓那边识别,因此本篇博客上的解决方法还是有一定的问题的。面试官说这需要后台去做相关处理,而不用我们客户端做过多的处理。听到面试官的说法,我顿时挺高兴,可在实际开发中我还没有实现过,在真正的开发中实现了此功能(后台处理)再给出确定的答案吧。



版权声明:本文为博主原创文章,未经博主允许不得转载。

IOS系统自带表情包,及使用详情

  • 2015年06月08日 17:27
  • 14.54MB
  • 下载

iOS-71-关于iOS、Android、服务端对键盘原生表情的处理

在网上查了很多资料,各种解说都有,都是些大神,我现在用一个简单的方法解决了iOS键盘原生表情与服务端交互: 1、仅仅用了UTF-8编解码: 1)、当输入某个表情后,将其用这个方法转换一下再发送给服...
  • IOT_LI
  • IOT_LI
  • 2016年08月24日 19:40
  • 556

IOS 自带Emoji表情上传服务器问题

emoji表情有如图中的四种格式的编码,安卓端传给服务器的为图中的UTF16格式, 我只能获取到UTF8的格式,要怎样才能转为UTF16的编码格式?同时要怎样才能兼容表情、字母、汉字三种一起发给服务器...
  • chuoyi0950
  • chuoyi0950
  • 2016年12月31日 05:51
  • 1137

ios中使用emoji表情

在iOS UILabel,UITextView,UIAlertView等控件中都可以使用 使用方法如下 NSString *s = [NSString stringWithFormat:@"Thi...
  • xutianyu930818
  • xutianyu930818
  • 2015年03月03日 11:19
  • 5677

iOS 评论中含有表情的处理方法

iOS开发中遇到发布动态, 带有emoji表情的时候就需要对字符串进行编码 if (IS_iOS9) { contentString = [contentString st...
  • dongzhensong
  • dongzhensong
  • 2016年10月14日 21:07
  • 258

iOS中Emoji表情的判断

问题服务器端不支持Emoji表情,因此客户端在上传用户输入时,不能包含Emoji表情。那么,该如何判断字符串中是否含有Emoji呢?...
  • liujinlongxa
  • liujinlongxa
  • 2015年03月11日 22:58
  • 35930

带表情的评论

完整demo下载效果展示注意在将编辑好的含有表情的字符串存入数据库之后,可能由于编码格式及转义等原因,导致取回的字符串有所改变,存入数据和取出数据的时候需要需要做一些字符串的处理。以下是我在项目中遇到...
  • adrian_rendong
  • adrian_rendong
  • 2016年12月02日 17:25
  • 742

iOS中Emoji表情的判断

问题服务器端不支持Emoji表情,因此客户端在上传用户输入时,不能包含Emoji表情。那么,该如何判断字符串中是否含有Emoji呢?...
  • liujinlongxa
  • liujinlongxa
  • 2015年03月11日 22:58
  • 35930

IOS或者Android传递 含有emoji表情的文本到服务器之php处理方式

微信接口中对于emoji表情使用的是UTF-8的二进制字符串,并没有解码,表现就是当收到微信端用户发来的emoji表情时,显示为一个方块型「」或是无法显示的字符,这时就需要对其进行转码。同理在向微信...
  • jquery_zhang
  • jquery_zhang
  • 2015年06月30日 22:12
  • 3964

iOS开发emoji处理方式大起底

总结就一点内容:就iOS和Android端来说,不需要任何处理,将emoji字符上传到服务器,需要的时候服务器原样返回就OK,服务器数据库存储做好相应的处理。 原文地址:http://blo...
  • allanGold
  • allanGold
  • 2016年06月16日 09:15
  • 4401
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:评论中发emoji表情 iOS
举报原因:
原因补充:

(最多只允许输入30个字)