过滤emoji图标
2019-07-03 本文已影响0人
冰红茶ht
为什么要过滤
我们公司使用的是MySQL·这里就会涉及到他的编码格式
utf8和utf8mb4
- MySQL在5.5.3之后增加了这个utf8mb4的编码,mb4就是most bytes 4的意思,专门用来兼容四字节的unicode。
- 原来mysql支持的 utf8 编码最大字符长度为 3 字节, 如果遇到 4 字节的宽字符就会插入异常了
emoji大部分的图标utf8编码的都是4个字节,所以要屏蔽emoji4 字节的图标
方法
- 可以使用插件过滤 emoji-regex 使用npm 安装, 但是也只能过滤部分4字节的图标
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] 所以过滤掉这些不能编码的字符就可以了