本文做者 我是周洲java
原文連接 https://blog.csdn.net/u012904383/article/details/79376707git
本人使用的是第三種引入jar的方法sql
問題:app
Emoji表情從三方數據中獲取沒有過濾,致使存入DB的時候報錯。工具
緣由:ui
UTF-8編碼有多是兩個、三個、四個字節。Emoji表情是4個字節,而Mysql的utf8編碼最多3個字節,因此數據插不進去。編碼
解決方案:spa
1.將已經建好的表也轉換成utf8mb4,這個方法不可行,有的時候就不靈了。.net
2,寫個工具類:過濾掉emoji表情符號code
public class EmojiFilter { private static boolean isEmojiCharacter(char codePoint) { return (codePoint == 0x0) || (codePoint == 0x9) || (codePoint == 0xA) || (codePoint == 0xD) || ((codePoint >= 0x20) && (codePoint <= 0xD7FF)) || ((codePoint >= 0xE000) && (codePoint <= 0xFFFD)) || ((codePoint >= 0x10000) && (codePoint <= 0x10FFFF)); } /** * 過濾emoji 或者 其餘非文字類型的字符 * * @param source * @return */ public static String filterEmoji(String source) { if (StringUtils.isBlank(source)) { return source; } StringBuilder buf = null; int len = source.length(); for (int i = 0; i < len; i++) { char codePoint = source.charAt(i); if (isEmojiCharacter(codePoint)) { if (buf == null) { buf = new StringBuilder(source.length()); } buf.append(codePoint); } } if (buf == null) { return source; } else { if (buf.length() == len) { buf = null; return source; } else { return buf.toString(); } } }
3,使用別人封裝的一個類,專門解決emoji問題的。這個在git上有開源的代碼。在pom工程中引入
<dependency> <groupId>com.vdurmont</groupId> <artifactId>emoji-java</artifactId> <version>4.0.0</version> </dependency>
直接就能夠在代碼中使用了。
EmojiParser.removeAllEmojis(str)
這個方法能夠過濾掉字符串內的emoji表情。
————————————————版權聲明:本文爲CSDN博主「我是周洲」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處連接及本聲明。原文連接:https://blog.csdn.net/zhou2s_101216/article/details/79376707