美文网首页iOS之报错上架填坑IOS开发iOS 程序员
彻底解决iOS输入表情,报系统异常问题

彻底解决iOS输入表情,报系统异常问题

作者: 我是七月 | 来源:发表于2017-06-23 21:48 被阅读577次
    奋斗的七月

    之前写的一篇iOS限制输入表情(emoji),因为输入表情之后,服务器返回系统异常,所以就限制了输入表情。但是这种方法终究不是一个最好的解决办法,如果需求是要求可以输入表情,并且要展示出来呢。所以我们要另辟新径。

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

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

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

    NSString *encodedString = (NSString *)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (CFStringRef)urlString, (CFStringRef)@"!$&'()*+,-./:;=?@_~%#[]", NULL, kCFStringEncodingUTF8);
    
    

    2、对从服务器获取回来含有表情的字符串进行反转后显示在页面上:

    NSString *showText = [serverString stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    

    3、把编码的字符串反转之后的显示效果图:


    奋斗的七月

    相关文章

      网友评论

      • 清無:【Swift】:

        发送数据:
        let content = emojText.addingPercentEncoding(withAllowedCharacters: .illegalCharacters) ?? ""

        解析数据:
        let emojText = content.removingPercentEncoding ?? ""
      • 203c7880b37c:谢谢大神,mark
        203c7880b37c:@奋斗的七月 发现个问题就是,我拷贝的时候。比如我限制是400字,然后我拷贝几次,把他400字拷贝满,在这个时候,如果是单数的话,会出现一个带框“A”的字符,然后你转码是空的0 0
        我是七月:@Vyron 共同进步😆
      • zzchsppy:但iOS和安卓的表情能通用吗
        我是七月:恩,可以呀,安卓也可以进行转码发送给服务端,然后服务端保存,再次返回来的时候,在进行转一次码就可以显示了。

      本文标题:彻底解决iOS输入表情,报系统异常问题

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