做了一些信息提交的操作,輸入了Emoji表情時,后臺數據庫無法存儲
原因:UTF-8編碼有可能是兩個、三個、四個字節。Emoji表情是4個字節,而Mysql的utf8編碼最多3個字節,所以數據插不進去
討論了一些方案,最后還是前端來做過濾,如果是Emoji表情直接干掉,因此也找了一些正則表達式,記錄下
只過濾一Emoji表情:
[^/u0000-/uFFFF]
過濾Emoji表情和顏文字:
[//ud83c//udc00-//ud83c//udfff]|[//ud83d//udc00-//ud83d//udfff]|[//u2600-//u27ff]|[//ud83e//udd00-//ud83e//uddff]|[//u2300-//u23ff]|[//u2500-//u25ff]|[//u2100-//u21ff]|[//u0000-//u00ff]|[//u2b00-//u2bff]|[//u2d06]|[//u3030]
寫了個靜態方法使用:
/** * Emoji表情校驗 * * @param string * @return */ public static boolean isEmoji(String string) { //過濾Emoji表情 Pattern p = Pattern.compile("[^//u0000-//uFFFF]"); //過濾Emoji表情和顏文字 //Pattern p = Pattern.compile("[//ud83c//udc00-//ud83c//udfff]|[//ud83d//udc00-//ud83d//udfff]|[//u2600-//u27ff]|[//ud83e//udd00-//ud83e//uddff]|[//u2300-//u23ff]|[//u2500-//u25ff]|[//u2100-//u21ff]|[//u0000-//u00ff]|[//u2b00-//u2bff]|[//u2d06]|[//u3030]"); Matcher m = p.matcher(string); return m.find(); }總結
以上所述是小編給大家介紹的Android過濾emoji表情正則表達式,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VEVB武林網網站的支持!
新聞熱點
疑難解答