日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

java Mysql 存儲emoji表情解決方案

 quasiceo 2018-08-19

在進行Mysql 存儲的時候,發(fā)現(xiàn)在保存帶有emoji表情的時候,保存失敗,錯誤信息為:

這里寫圖片描述

出現(xiàn)的原因

  • 經(jīng)過網(wǎng)上查閱發(fā)現(xiàn),mysql字符集大多數(shù)使用的是utf8,而mysql的utf8編碼的一個字符最多3個字節(jié),但是一個emoji表情為4個字節(jié),所以utf8不支持存儲emoji表情。但是utf8的超集utf8mb4一個字符最多能有4字節(jié),所以能支持emoji表情的存儲,并且兼容utf8

觖決方法

  • 方法一
    • 修改數(shù)據(jù)庫編碼集設(shè)置為utf8mb4,無論是數(shù)據(jù)庫還是表,還是字段
  • 方法二
    • 如果有些原因你不能修改數(shù)據(jù)庫編碼或者其他原因,有一個插件可以幫到你,我也是用這種方式處理的,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表情轉(zhuǎn)換成別名的形式: " + EmojiParser.parseToAliases(json.toString()));
        System.out.println("將emoji表情轉(zhuǎn)換成html十進制表示: " + EmojiParser.parseToHtmlDecimal(json.toString()));
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 運行結(jié)果為:

這里寫圖片描述


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

有什么問題大家可以留言

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多