一、問題現象
儲存微信使用者昵稱到資料庫,ios使用者的昵稱包含表情,插入資料庫出錯。
二、分析
使用JS過濾emoji表情的主要原因:input标簽中輸入emoji表情,送出表單後插入資料庫報錯。
原因是因為UTF-8編碼有可能是兩個、三個、四個位元組。Emoji表情是4個位元組,而MySQL的utf8編碼最多3個位元組,是以資料插不進去。
三、解決方案
1.将Mysql的編碼從utf8轉換成utf8mb4
Linux修改mysql編碼,參考另一篇文章:http://ycgit.blog.51cto.com/8590215/1783775
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'), ''));
}