日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

特殊表情存数据库处理

發布時間:2025/3/15 数据库 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 特殊表情存数据库处理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

開發途中遇到評價的功能,需要存入表情符號比如:

以及這種

存入數據庫的時候會拋出異常,\x86\啥的

百度解決辦法是 數據庫改utf8mb4? 但是測試改表的字符集并沒有用,

然后我也沒敢改庫的字符集仍然使用utf8

我的解決辦法是代碼層面的處理,進行URLEncoder轉碼 和URLEncoder 解碼:

/*** @Description emoji表情轉換* @param str 待轉換字符串* @return 轉換后字符串* @throws UnsupportedEncodingException*/public static String emojiConvertToUtf(String str)throws UnsupportedEncodingException {String patternString = "([\\x{10000}-\\x{10ffff}\ud800-\udfff])";Pattern pattern = Pattern.compile(patternString);Matcher matcher = pattern.matcher(str);StringBuffer sb = new StringBuffer();while (matcher.find()) {try {matcher.appendReplacement(sb,"[[" + URLEncoder.encode(matcher.group(1),"UTF-8") + "]]");} catch (UnsupportedEncodingException e) {throw e;}}matcher.appendTail(sb);log.info("emoji表情轉字符串:"+sb.toString());return sb.toString();}/*** @Description 還原emoji表情的字符串** @param str 轉換后的字符串* @return 轉換前的字符串* @throws UnsupportedEncodingException*/public static String utfemojiRecovery(String str)throws UnsupportedEncodingException {String patternString = "\\[\\[(.*?)\\]\\]";Pattern pattern = Pattern.compile(patternString);Matcher matcher = pattern.matcher(str);StringBuffer sb = new StringBuffer();while (matcher.find()) {try {matcher.appendReplacement(sb,URLDecoder.decode(matcher.group(1), "UTF-8"));} catch (UnsupportedEncodingException e) {throw e;}}matcher.appendTail(sb);log.info("字符串轉emoji表情:"+sb.toString());return sb.toString();}

注意:

測試時在對象get set方法上轉碼 解碼,存入數據庫仍然是失敗的

大概是因為mybatis的insert 和 update方法 mapper快捷方法實際處理時仍存入的未轉碼的

所以在業務代碼上進行轉碼解碼的:

/*** 轉碼 解決表情問題*/try {evaluateContent = StringUtil.emojiConvertToUtf(evaluateContent);} catch (UnsupportedEncodingException e) {throw new BusinessException(CommonErrorCode.E_102906);}

?

/*** 解碼*/try {evaluateContent = StringUtil.utfemojiRecovery(evaluateContent);} catch (UnsupportedEncodingException e) {throw new BusinessException(CommonErrorCode.E_102906);}

?

總結

以上是生活随笔為你收集整理的特殊表情存数据库处理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。