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'), '')); }