以前一直沒有遇到這樣的問題,今天遇到了而且百度找了很久都沒找到合適的解決方法,所以記錄下。
使用JS過濾emoji表情的主要原因:input標籤中輸入emoji表情,提交表單後插入數據庫報錯。
原因是因爲UTF-8編碼有可能是兩個、三個、四個字節。Emoji表情是4個字節,而MySql的utf8編碼最多3個字節,所以數據插不進去。
於是找到兩個解決方案:
1.將Mysql的編碼從utf8轉換成utf8mb4
2.前端JS校驗過濾掉emoji表情
下面主要粘下過濾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'), ''));
}