Java将u开头的unicode字符串转换为中文
问题如下
有一个字符串,如下:
{"code":1000,"message":"\u67e5\u8be2\u6210\u529f","data":"\u5317\u4eac\u9996\u90fd"}
这个字符串真的是UTF-8的字符串,\u67e5这些字符就是6个字符,如何将其转换为中文:
{"code":1000,"message":"查询成功","data":"北京首都"}
转换方法(一)
因为他是json格式,那么有最简单的方式,Java直接解析json即可:
package cn.ganlixin.ssm.util; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import lombok.Data; import org.junit.Test; public class JsonUtilsTest { @Test public void test() throws JsonProcessingException { // 要解析的json字符串 String s = "{\"code\":1000,\"message\":\"\\u67e5\\u8be2\\u6210\\u529f\",\"data\":\"\\u5317\\u4eac\\u9996\\u90fd\"}"; ObjectMapper objectMapper = new ObjectMapper(); Response response = objectMapper.readValue(s, Response.class); System.out.println(response); // JsonUtilsTest.Response(code=1000, message=查询成功, data=北京首都) } /** * 创建一个类,与json的字段相配 */ @Data private static class Response { private Integer code; private String message; private String data; } }
转换方式(二)
如果是一个很普通的字符串,不是json格式,就是一个字符串\u67e5\u8be2\u6210\u529f,怎么解析呢?
可以使用下面的方法解析:
package cn.ganlixin.ssm.util; import com.fasterxml.jackson.core.JsonProcessingException; import org.junit.Test; import java.util.regex.Matcher; import java.util.regex.Pattern; public class UnicodeDecode { @Test public void test() throws JsonProcessingException { // 要解析的json字符串 String s = "\\u67e5\\u8be2\\u6210\\u529f"; System.out.println(s); // \u67e5\u8be2\u6210\u529f System.out.println(convertUnicodeToCh(s)); // 查询成功 } /** * 将unicode字符串转为正常字符串 * * @param str unicode字符串(比如"\u67e5\u8be2\u6210\u529f") * @return 转换后的字符串(比如"查询成功") */ private static String convertUnicodeToCh(String str) { Pattern pattern = Pattern.compile("(\\\\u(\\w{4}))"); Matcher matcher = pattern.matcher(str); // 迭代,将str中的所有unicode转换为正常字符 while (matcher.find()) { String unicodeFull = matcher.group(1); // 匹配出的每个字的unicode,比如\u67e5 String unicodeNum = matcher.group(2); // 匹配出每个字的数字,比如\u67e5,会匹配出67e5 // 将匹配出的数字按照16进制转换为10进制,转换为char类型,就是对应的正常字符了 char singleChar = (char) Integer.parseInt(unicodeNum, 16); // 替换原始字符串中的unicode码 str = str.replace(unicodeFull, singleChar + ""); } return str; } }
相关推荐
86530296 2020-11-10
周游列国之仕子 2020-09-21
88540591 2020-06-16
89411051 2020-06-14
mjshldcsd 2020-06-14
88384957 2020-06-12
84590091 2020-06-08
88540591 2020-06-04
88540591 2020-06-01
81214051 2020-06-01
84590091 2020-05-03
81214051 2020-04-25
honghao0 2020-04-24
84590091 2020-04-22
88384957 2020-03-27
85271041 2020-03-08
84590091 2020-02-16