java emoji表情存儲解決方案


1.問題產生情況

我遇到這個問題是做微信開發的時候有些有用的頭像用了微信的emoji表情,然而我的mysql數據庫用的編碼是utf8_general_ci,就是utf-8編碼,結果也就報錯誤了。

 

2.為什么會出現這種原因

因為mysql的utf8編碼的一個字符最多3個字節,但是一個emoji表情為4個字節,所以utf8不支持存儲emoji表情。但是utf8的超集utf8mb4一個字符最多能有4字節,所以能支持emoji表情的存儲。

 

3.解決方法之一

把你的數據庫編碼集設置為utf8mb4,無論是數據庫還是表,還是字段。雖然會增加存儲,但是這個可以忽略不計。

 

4.解決方法之二

有句話說得好,問題來了要么解決要么折中解決。如果有些原因你不能修改數據庫編碼之類的,你可以用java的一些插件,如emoji-java這種emoji表情插件對表情進行特殊處理,然后保存或者去掉表情,這也是一種解決方法哦。

 

5.最后說點什么

通過對一個問題不同角度的思考,原來才發現世界同而不同,不同而同......

 

最后來段代碼:

 

import com.github.binarywang.java.emoji.EmojiConverter;


/**
 * 表情處理類
 * @author Administrator
 *
 */
public final class EmojiUtil {

    private static EmojiConverter emojiConverter = EmojiConverter.getInstance();
    
    /**
     * 將emojiStr轉為 帶有表情的字符
     * @param emojiStr
     * @return
     */
    public static String emojiConverterUnicodeStr(String emojiStr){
         String result = emojiConverter.toUnicode(emojiStr);
         return result;
    }
    
    /**
     * 帶有表情的字符串轉換為編碼
     * @param str
     * @return
     */
    public static String emojiConverterToAlias(String str){
        String result=emojiConverter.toAlias(str);
        return result;
    }
    
    
}

 

使用的框架是:

<dependency>
    <groupId>com.github.binarywang</groupId>
    <artifactId>java-emoji-converter</artifactId>
    <version>0.0.1</version>
</dependency>

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM