过滤emoji图标

作者: 冰红茶ht | 来源:发表于2019-07-03 18:56 被阅读0次

    为什么要过滤

    我们公司使用的是MySQL·这里就会涉及到他的编码格式
    utf8和utf8mb4

    1. MySQL在5.5.3之后增加了这个utf8mb4的编码,mb4就是most bytes 4的意思,专门用来兼容四字节的unicode。
    2. 原来mysql支持的 utf8 编码最大字符长度为 3 字节, 如果遇到 4 字节的宽字符就会插入异常了

    emoji大部分的图标utf8编码的都是4个字节,所以要屏蔽emoji4 字节的图标

    方法

    1. 可以使用插件过滤 emoji-regex 使用npm 安装, 但是也只能过滤部分4字节的图标
    2.  var text =  new TextEncoder();
       val.replace(/./g, function(a) {  
         return text.encode(a) + '' === '239,191,189' ? '' : a;
       }); // val 就是当前input中输入的字符串 4字节的
      // emoji图标是两个字符长度 绝大多数(目前还没发 
      // 现特殊)字符都是不能进行编码的 使用 encodeURI 会报错 使用上面TextEncoder对象的encode方法都会 将不能编码的字符统一返回为 [239, 191,189] 所以过滤掉这些不能编码的字符就可以了
      
      
      

    相关文章

      网友评论

        本文标题:过滤emoji图标

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