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.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\"}";中文字符unicode查询
ObjectMapper objectMapper = new ObjectMapper();
Response response = adValue(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.JsonProcessingException;
import org.junit.Test;
import Matcher;
import 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 = Patternpile("(\\\\u(\\w{4}))");
Matcher matcher = pattern.matcher(str);
// 迭代,将str中的所有unicode转换为正常字符
while (matcher.find()) {
String unicodeFull = up(1); // 匹配出的每个字的unicode,⽐如\u67e5
String unicodeNum = up(2); // 匹配出每个字的数字,⽐如\u67e5,会匹配出67e5            // 将匹配出的数字按照16进制转换为10进制,转换为char类型,就是对应的正常字符了
char singleChar = (char) Integer.parseInt(unicodeNum, 16);
// 替换原始字符串中的unicode码
str = place(unicodeFull, singleChar + "");
}
return str;
}
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。