最近调用关联系统的接口,对方返回的msg内容是Unicode编码的,于是学习了一下Unicode转String的方法
先上代码:
public static String unicode2String(String unicode) {
StringBuffer string = new StringBuffer();
String[] hex = unicode.split("\\\\u");
for (int i = 1; i < hex.length; i++) {
int data = Integer.parseInt(hex[i], 16);
string.append((char) data);
}
return string.toString();
}
原理:Unicode编码是把字符使用ascii表的对应方式把汉字转换为16进制,然后用\u分隔开,所以我们反过来做一遍
首先吧字符串以\u分割, \u8521\u8fea为例,分割后就是8521和8fea,这两个串是16进制的,再使用Integer.paresInt()方法转换为10进制,最后转为StringBuffer,再转为String,完成。