天天看點

java字元串中Emoji表情處理

在爬蟲擷取字元串内容時,遇到内容中有手機表情,存入資料庫是報錯!網上找了半天,發現好多人不去實驗一下就複制别人的代碼網上發,然後導緻我拿來用直接不行。最終找到一個可以行辦法,在此總結一下:

方法主要有兩個:

第一,修改資料庫字元集:

這種方法需要的硬性要求就是你的mysql資料庫版本5.5以後的。一般有資料庫管理工具的,直接打開改了就是了,比如我用的HeidiSQL,直接把表改為utf8mb4就可以了。這種方法簡單省事,但是可能需要重新開機資料庫。還有個問題是,有時候這方法不太靈,我第一次用這個方法,完美解決的問題,但是第二次,說啥都不好使。是以,這種方式還是不推薦了。

第二,将這些表情過濾掉

既然資料庫不能儲存,那就直接把這些表情過濾掉好了。這種情況是損壞客戶的個性而讓服務更便捷的一張方式。目前很多網站就是這麼幹的,畢竟效率是關鍵,你這表情即便儲存了,也說不定哪裡再次用到,展示不了。

建議做成工具方法,友善實用,親測可行。

/**
     * emoji表情替換
     *
     * @param source 原字元串
     * @param slipStr emoji表情替換成的字元串                
     * @return 過濾後的字元串
     */
    public static String filterEmoji(String source,String slipStr) {
        if(StringUtils.isNotBlank(source)){
            return source.replaceAll("[\\ud800\\udc00-\\udbff\\udfff\\ud800-\\udfff]", slipStr);
        }else{
            return source;
        }
    }
           

原文:http://www.3fwork.com/b200/004985MYM000642/