过滤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] 所以过滤掉这些不能编码的字符就可以了
    
    
    
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 先补习一下Unicode 与 UTF-8的历史演变过程 http://www.jianshu.com/p/ab0d...
    爱蛇阅读 7,929评论 0 1
  • 1、问题:mysql 遇到某些中文插入异常最近有同学反馈了这样一个问题: 上述语句在脚本中 load 入库的时候会...
    kanasu阅读 7,943评论 1 4
  • 在MySLQ中 UPDATA 和 INSERT 数据的时候,如果数据上面带有emoji图标,例如:💗、👽、💔很容易...
    Weirdor阅读 4,449评论 0 1
  • https://my.oschina.net/wingyiu/blog/153357 MYSQL 5.5 之前, ...
    爱蛇阅读 7,704评论 0 0
  • 运算符可以用于宏函数的替换部分。这个运算符把两个语言符号组合成单个语言符号,为宏扩展提供了一种连接实际变元的手段 ...
    可bing阅读 2,939评论 0 1