一、js判断文本中是否有表情符号表情
isEmojiCharacter(substring){ ?????for ?( ?var ?i = 0; i <substring.length; i ++){ ?????????var ?hs = substring.charCodeAt(i); ?????????if ?(0xd800 <= hs && hs <= 0xdbff){ ?????????????if ?(substring.length> 1){ ?????????????????var ?ls = substring.charCodeAt(i + 1); ?????????????????var ?uc =((hs - 0xd800)* 0x400)+(ls - 0xdc00)+ 0x10000; ?????????????????if ?(0x1d000 <= uc && uc <= 0x1f77f){ ?????????????????????返回true ; ??????????????????} ?????????????} ?????????} ?否则如果 (substring.length> 1){ ??????????????var ?ls = substring.charCodeAt(i + 1); ?????????????if ?(ls == 0x20e3){ ?????????????????返回true ; ??????????????} ?????????} ?else ?{ ?????????????如果 (0x2100 <= hs && hs <= 0x27ff){ ?????????????????返回true ; ??????????????} ?else if ?(0x2B05 <= hs && hs <= 0x2b07){ ??????????????????返回true ; ??????????????} ?else if ?(0x2934 <= hs && hs <= 0x2935){ ??????????????????返回true ; ??????????????} ?else if ?(0x3297 <= hs && hs <= 0x3299){ ??????????????????返回true ; ??????????????} ?else if ?(hs == 0xa9 || hs == 0xae || hs == 0x303d || hs == 0x3030 ??????????????????????|| hs == 0x2b55 || hs == 0x2b1c || hs == 0x2b1b ?????????????????????|| hs == 0x2b50){ ?????????????????返回true ; ??????????????} ?????????} ?????} ?}
二、js文件过滤的表情符号表情
???使用JS过滤表情符号表情的主要原因:输入标签中输入表情符号表情,表单提交后插入数据库。报错原因: ???????因为UTF-8编码有可能是两个,三个,四个字节.Emoji表情是4个字节,而MySQL的utf8编码最多3个字节,所以数据插不进去。 ???????于是找到两个解决方案: ?????????1.将Mysql的编码从utf8转换成utf8mb4 ?????????2.前端JS校验过滤掉emoji表情