1. 程式人生 > >解決Emoji存儲MySQL報錯問題

解決Emoji存儲MySQL報錯問題

不支持 span artifact utf-8 存儲 result string 引入 一個表

在解決之前,得先說明一下為什麽會出現報錯,Emoji表情占用4個字節,但是MySQL數據庫UTF-8編碼最多只能存儲3個字節,就會導致存儲不進去

如何解決Emoji存儲問題

mysql 的 utf8編碼的一個字符最多3個字節,但是一個emoji表情為4個字節,所以utf8不支持存儲emoji表情。但是utf8的超集utf8mb4一個字符最多能有4字節,所以能支持emoji表情的存儲。但是修改這個配置太繁瑣了,容易出錯,emoji-java這個庫可以在代碼段解決這個問題,解決思路:

  • 頁面有一個表情??,在經過處理之後可以是??,將這個字符存入數據庫
  • 讀取的時候可以將??這個字符轉為??

例如: ?? 我可以存儲為:smile:,??存儲為:cry:,等等,可以這樣映射起來。

1、引入依賴

1 <dependency>
2      <groupId>com.vdurmont</groupId>
3      <artifactId>emoji-java</artifactId>
4     <version>3.2.0</version>
5 </dependency>

2、用法

String nikeNameTmp = resultjson.get("nickName").toString();
String nikeName = EmojiParser.parseToAliases(nikeNameTmp); //將表情符號轉為字符

使用下面的兩個方法就可以互相轉換了:

EmojiParser.parseToAliases(string); 將表情符號轉為字符

EmojiParser.parseToUnicode(string); 將字符轉為表情符號

解決Emoji存儲MySQL報錯問題