最近 爬 数据, 遇到了 表情插入mysql数据库 报错的。
以前一直没有遇到这样的问题,今天遇到了而且百度找了很久都没找到合适的解决方法,所以记录下。
使用JS过滤emoji表情的主要原因:input标签中输入emoji表情,提交表单后插入数据库报错。
原因是因为UTF-8编码有可能是两个、三个、四个字节。Emoji表情是4个字节,而MySQL的utf8编码最多3个字节,所以数据插不进去。
于是找到两个解决方案:
1.将Mysql的编码从utf8转换成utf8mb4
2.前端JS校验过滤掉emoji表情
下面主要粘下过滤emoji的JS代码
var comments=$(".desc").text().replace("商户"," ").replace("浏览"," ").trim(); var ranges = [ '\ud83c[\udf00-\udfff]', '\ud83d[\udc00-\ude4f]', '\ud83d[\ude80-\udeff]' ]; var comment = comments .replace(new RegExp(ranges.join('|'), 'g'), '');
--------------------------------------------------------------------------------------------------
var mobileReg = /^(13|14|15|17|18)\d{9}$/;//座机 var phoneReg = /^((\(\d{2,3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}(\-\d{1,4})?$/;//手机 var reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;//身份证