1 public class emojCandleUtil { 2 3 private static final Logger log =LoggerFactory.getLogger(emojCandleUtil.class); 4 5 6 /** 7 * 将字符串中的emoji表情转换成可以在utf-8字符集数据库中保存的格式 8 * @param str 待转换字符串 9 * @return 转换后的字符串 10 */ 11 12 13 public String emojiConvert(String str) 14 throws UnsupportedEncodingException { 15 String patternString = "([\\x{10000}-\\x{10ffff}\ud800-\udfff])"; 16 17 Pattern pattern = Pattern.compile(patternString); 18 Matcher matcher = pattern.matcher(str); 19 StringBuffer sb = new StringBuffer(); 20 while(matcher.find()) { 21 try { 22 matcher.appendReplacement(sb,"[["+ URLEncoder.encode(matcher.group(1),"UTF-8") + "]]"); 23 } catch(UnsupportedEncodingException e) { 24 log.error("emojiConvert",e);25 throw e; 26 } 27 } 28 matcher.appendTail(sb); 29 return sb.toString(); 30 } 31 32 /** 33 * 还原utf8数据库中保存的含转换后emoji表情的字符串 34 * @param str 转换后的字符串 35 * @return 转换前的字符串 36 */ 37 public String emojiConvertRst(String str) 38 throws UnsupportedEncodingException { 39 String patternString = "\\[\\[(.*?)\\]\\]"; 40 41 Pattern pattern = Pattern.compile(patternString); 42 Matcher matcher = pattern.matcher(str); 43 44 StringBuffer sb = new StringBuffer(); 45 while(matcher.find()) { 46 try { 47 matcher.appendReplacement(sb, 48 URLDecoder.decode(matcher.group(1), "UTF-8")); 49 } catch(UnsupportedEncodingException e) { 50 log.error("emojiConvertRst",e);51 throw e; 52 } 53 } 54 matcher.appendTail(sb); 55 return sb.toString(); 56 }57 58 }
本文是参考的大神,亲测有效!
posted on 2018-05-25 16:53 阅读( ...) 评论( ...)