解決Emoji存儲MySQL報錯問題
阿新 • • 發佈:2018-08-10
不支持 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報錯問題