1、问题现象前端
保存微信用户昵称到数据库,ios用户的昵称包含表情,插入数据库出错。mysql
2、分析ios
使用JS过滤emoji表情的主要缘由:input标签中输入emoji表情,提交表单后插入数据库报错。
缘由是由于UTF-8编码有多是两个、三个、四个字节。Emoji表情是4个字节,而MySQL的utf8编码最多3个字节,因此数据插不进去。 git
3、解决方案sql
1.将Mysql的编码从utf8转换成utf8mb4 数据库
Linux修改mysql编码,参考另外一篇文章:http://ycgit.blog.51cto.com/8590215/1783775微信
2.前端JS校验过滤掉emoji表情ide
下面主要粘下过滤emoji的JS代码编码
function filteremoji(){ var ranges = [ '\ud83c[\udf00-\udfff]', '\ud83d[\udc00-\ude4f]', '\ud83d[\ude80-\udeff]' ]; var emojireg = $("#emoji_input").val(); emojireg = emojireg .replace(new RegExp(ranges.join('|'), 'g'), '')); }