iOS过滤emoji (处理文本输入框的系统表情)

转载 2016年08月29日 14:15:06

         服务器对emoji表情直接保存不兼容, 如果客户端直接把表情符号传给服务端保存的话, 会得到一个保存失败的错误

        swift过滤字符串

       





  • pragma mark - <UITextViewDelegate>
    
    - (void)textViewDidChange:(UITextView *)textView
    {
        NSLog(@"没有过滤前输入的字符串===%@",textView.text);
        NSString *filterString = [self disableEmoji:textView.text];
        NSLog(@"过滤Emoji表情后的字符串===%@",filterString);
        textView.text = filterString;
    }
    
    /**
     *  正则过滤表情
     */
    - (NSString *)disableEmoji:(NSString *)text
    {
        if (!text.length) return text;
        NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"[^\\u0020-\\u007E\\u00A0-\\u00BE\\u2E80-\\uA4CF\\uF900-\\uFAFF\\uFE30-\\uFE4F\\uFF00-\\uFFEF\\u0080-\\u009F\\u2000-\\u201f\r\n]" options:NSRegularExpressionCaseInsensitive error:nil];
        NSString *modifiedString = [regex stringByReplacingMatchesInString:text
                                                                   options:0
                                                                     range:NSMakeRange(0, [text length])
                                                              withTemplate:@""];
        return modifiedString;
    }
     OC 过滤的方法
  • 办法二:

    • 第二种办法可以联想到我们在请求有中文链接的网址时会请求失败, 正常的处理是先把含有中文的网址进行编码后在请求就会成功, 因此,我们保存表情时也可以你用这种办法;

    注意: 这里在你把转码后的操作发给服务器后, 需要做的一个额外操作就是, 你再从服务器去回来显示时, 需要反转一下之前的编码才能正常显示出表情符号, 否则就是一堆乱码, 如: 123456%F0%9F%98%83%E2%98%BA%F0%9F%98%9A%F0%9F%98%99%F0%9F%99%8412 ;

    1. 把含有表情的字符串进行编码后再发送给服务端:

      NSString *inputText = [self.editTextView.text stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
      • 注意: 这里如果你输入的字符串中已经含有一些已转义的特殊符号: % @ $等时, 上面的方法就不会再对这些特殊的进行转码, 可以使用下面的方法
        NSString *encodedString = (NSString *)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (CFStringRef)urlString, (CFStringRef)@"!$&'()*+,-./:;=?@_~%#[]", NULL, kCFStringEncodingUTF8);
    2. 对从服务器获取回来含有表情的字符串进行反转后显示在页面上:

      NSString *showText = [serverString stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    3. 把编码的字符串反转之后的显示效果图:




    办法三:

    • 第三中办法就是把输入的表情转成NSData的二进制数据传给服务器;
      NSData *data =[inputText dataUsingEncoding:NSUTF8StringEncoding];
      不过这种办法比较麻烦, 不建议使用这种方法;

    原文链接:http://www.jianshu.com/p/aa559c913323









  • iOS emoji表情过滤

    /**  *  emoji表情过滤  */ +(NSString *)filterEmoji:(NSString *)string {     NSUInteger len...
    • saw471
    • saw471
    • 2016年10月14日 13:33
    • 597

    iOS textView的emoji表情过滤

    // 类型 - (void)textViewDidChange:(UITextView *)textView {     NSRange textRange = [textView select...
    • saw471
    • saw471
    • 2016年11月02日 17:28
    • 810

    iOS 过滤emoji表情

    iOS输入框过滤emoji表情// // ViewController.m // test // // Created by 郭宇 on 13-11-15. // Copyright (c) ...
    • yxycowboy
    • yxycowboy
    • 2015年06月08日 14:38
    • 993

    iOS 输入框过滤emoji表情

    //  通过创建一个NSString 的category类目实现最后输入的表情的过滤 (输入框粘贴功能关闭) + (BOOL)isContainsTwoEmoji:(NSString *)strin...
    • saw471
    • saw471
    • 2016年11月02日 17:16
    • 1368

    项目总结-EMOJI表情处理详解(ios,android平台兼容)

    个人最近在做公司的android项目,里面要对EMOJI表情进行处理,由于ios产品已经上线,而我的android产品才刚刚开始,所以android需要兼容服务器端ios已经提交上去的EMOJI数据(...
    • pp_hdsny
    • pp_hdsny
    • 2014年02月10日 16:58
    • 2171

    cocos2dx在C++层屏蔽emoji表情

    在某些时候不希望用户输入emoji表情,所以需要将其过滤掉,屏蔽字符串中emoji表情方法如下: string check_input_str(const string& str ) { ...
    • lls1221
    • lls1221
    • 2016年05月19日 13:02
    • 2063

    iOS UI篇13- UITextView、UITextField检测并过滤Emoji表情符号

    UITextView UITextField 检测并过滤Emoji表情符号将苹果键盘的Emoji表情符号过滤掉。通过研究和测试,得到以下比较完美的解决方案,思路两条:1,当用户切换键盘为Emoji表情...
    • jeikerxiao
    • jeikerxiao
    • 2016年08月01日 20:32
    • 2296

    python emoji 表情过滤

    http://my.oschina.net/jiemachina/blog/189460 注意替换的这些emoji是标准的表情字符,每个表情本来是2个字节,替换成字符串后,每个表情就变成12个字...
    • dszgf5717
    • dszgf5717
    • 2016年07月30日 11:38
    • 3577

    iOS中Emoji表情的判断

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

    【Java开发常见问题解决】文本框表情emoji字符过滤处理方法

    在开发中经常遇到要对表情字符处理,如果前端和后端都未做过滤就会碰到这样的异常 SQLException: Incorrect string value: '\xF0\x9F\x98\x84' for ...
    • elricboa
    • elricboa
    • 2017年11月03日 21:06
    • 316
    内容举报
    返回顶部
    收藏助手
    不良信息举报
    您举报文章:iOS过滤emoji (处理文本输入框的系统表情)
    举报原因:
    原因补充:

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