过滤emoji图标

为什么要过滤

我们公司使用的是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图标)