js过滤emoji表情,消除mysql入库失败的问题。

如果数据库编码是utf-8而不是utf8mb4,那么mysql入库一些emoji表情的时候会出错,

那么再utf-8编码的情况下我们使用过滤emoji的方法来实现

function filteremoji(text){
    var ranges = [
        '\ud83c[\udf00-\udfff]',
        '\ud83d[\udc00-\ude4f]',
        '\ud83d[\ude80-\udeff]'
    ];
    text = text.replace(/\uD83C[\uDF00-\uDFFF]|\uD83D[\uDC00-\uDE4F]/g,'');
    return text.replace(new RegExp(ranges.join('|'), 'g'),'');
}

绝大部分表情可以通过上面的方法过滤掉,如果有遗漏可以通过下面的方法获取表情代码然后添加到过滤规则当中

console.log(escape(txt));

//escape得到%uD83C%u.........格式的编码,可对应成\u...格式