/** * unicode 转字符串 */ private static final Pattern REG_UNICODE = Pattern.compile("[0-9A-Fa-f]{4}"); public static String unicode2String(String str) { StringBuilder sb = new StringBuilder(); int len = str.length(); for (int i = 0; i < len; i++) { char c1 = str.charAt(i); if (c1 == '\\' && i < len - 1) { char c2 = str.charAt(++i); if (c2 == 'u' && i <= len - 5) { String tmp = str.substring(i + 1, i + 5); Matcher matcher = REG_UNICODE.matcher(tmp); if (matcher.find()) { sb.append((char) Integer.parseInt(tmp, 16)); i = i + 4; } else { sb.append(c1).append(c2); } } else { sb.append(c1).append(c2); } } else { sb.append(c1); } } return sb.toString(); } /** * 字符串转换unicode */ public static String string2Unicode(String string) { StringBuffer unicode = new StringBuffer(); for (int i = 0; i < string.length(); i++) { // 取出每一个字符 char c = string.charAt(i); String str = Integer.toHexString(c); switch (4 - str.length()) { case 0: unicode.append("\\u" + str); break; case 1: str = "0" + str; unicode.append("\\u" + str); break; case 2: case 3: default: str = String.valueOf(c); unicode.append(str); break; } } return unicode.toString(); }
只将表情和中文转化成unicode其他字符还是原来的样子