test2.java 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. import com.fasterxml.jackson.core.JsonProcessingException;
  2. import java.util.regex.Matcher;
  3. import java.util.regex.Pattern;
  4. public class test2 {
  5. public static void main(String[] args) throws JsonProcessingException{
  6. // 要解析的json字符串
  7. String s = "\\u8bbf\\u95ee\\u4e8b\\u7531";
  8. System.out.println(s); // \u67e5\u8be2\u6210\u529f
  9. System.out.println(convertUnicodeToCh(s)); // 查询成功
  10. }
  11. /**
  12. * 将unicode字符串转为正常字符串
  13. *
  14. * @param str unicode字符串(比如"\u67e5\u8be2\u6210\u529f")
  15. * @return 转换后的字符串(比如"查询成功")
  16. */
  17. private static String convertUnicodeToCh(String str) {
  18. Pattern pattern = Pattern.compile("(\\\\u(\\w{4}))");
  19. Matcher matcher = pattern.matcher(str);
  20. // 迭代,将str中的所有unicode转换为正常字符
  21. while (matcher.find()) {
  22. String unicodeFull = matcher.group(1); // 匹配出的每个字的unicode,比如\u67e5
  23. String unicodeNum = matcher.group(2); // 匹配出每个字的数字,比如\u67e5,会匹配出67e5
  24. // 将匹配出的数字按照16进制转换为10进制,转换为char类型,就是对应的正常字符了
  25. char singleChar = (char) Integer.parseInt(unicodeNum, 16);
  26. // 替换原始字符串中的unicode码
  27. str = str.replace(unicodeFull, singleChar + "");
  28. }
  29. return str;
  30. }
  31. }