首頁 > mysql教程 閱讀:0更新時間:2020-12-13 05:41:35

java Mysql 存儲emoji表情解決方案

在進行mysql 存儲的時候,發現在保存帶有emoji表情的時候,保存失敗,錯誤信息為:

這里寫圖片描述

出現的原因

  • 經過網上查閱發現,mysql字符集大多數使用的是utf8,而mysql的utf8編碼的一個字符最多3個字節,但是一個emoji表情為4個字節,所以utf8不支持存儲emoji表情。但是utf8的超集utf8mb4一個字符最多能有4字節,所以能支持emoji表情的存儲,并且兼容utf8

觖決方法

  • 方法一
    • 修改數據庫編碼集設置為utf8mb4,無論是數據庫還是表,還是字段
  • 方法二
    • 如果有些原因你不能修改數據庫編碼或者其他原因,有一個插件可以幫到你,我也是用這種方式處理的,emoji-java這個類庫,它可以幫你去掉表情,或者以其他可以存儲的字符來代替emoji表情,話不多說,看代碼:

  • 首先加入依賴

    這里寫圖片描述

  • 存儲過程中的中文示例:

這里寫圖片描述


  • 下面是利用emoji-java類庫的代碼片斷:
public static void main(String[] args) {
        Map map = new HashMap();
        map.put("name", "\ud83d\ude04正常中文\ud83d\ude04");
        map.put("name2", "\ud83d\ude0d\u8c22\ud83d\ude0d");
        map.put("desc", "其他");
        JSONObject json = (JSONObject) JSON.toJSON(map);
        System.out.println("帶有emoji表情的字符串打印效果: " + json.toString());
        System.out.println("去掉emoji表情的字符串打印效果: " + EmojiParser.removeAllEmojis(json.toString()));
        System.out.println("將emoji表情轉換成別名的形式: " + EmojiParser.parseToAliases(json.toString()));
        System.out.println("將emoji表情轉換成html十進制表示: " + EmojiParser.parseToHtmlDecimal(json.toString()));
    }
  • 運行結果為:

這里寫圖片描述


從運行結果可以看出,emoji-java類庫很好的處理了emoji表情字符串的處理,到此結束。

有什么問題大家可以留言

beylze編程學院,一個分享編程知識和seo優化知識的網站。跟著beylze一起學習,每天都有進步。

通俗易懂,深入淺出,一篇文章只講一個知識點。

文章不深奧,不需要鉆研,在公交、在地鐵、在廁所都可以閱讀,隨時隨地漲姿勢。

文章不涉及代碼,不燒腦細胞,人人都可以學習。

當你決定關注beylze(公眾號:beylze),你已然超越了90%的其他從業者!

相關文章

国产亚洲欧美日韩