从编码的unicode String转换为Java String

时间:2016-07-11 13:08:41

标签: java unicode

我在json数据中有一个字符串,如下所示:

#0023Sat Apr 30 10:46:11 UTC 2016#000a[Interoperability]Interoperability#005c Index=Unknown (R03)#000a[Exif]Shutter#005c Speed#005c Value=1/1999 sec#000a[Exif]Bits#005c Per#005c Sample=8 8 8 bits/component/pixel#000a[Exif]Exposure#005c Bias#005c Value=0 EV#000a[Exif]Sub-Sec#005c Time#005c Original=00#000a

所有这些#XXXX字都是unicode。

如何将其转换为Java String?

1 个答案:

答案 0 :(得分:3)

Pattern p = Pattern.compile("#([0-9A-Fa-f]{4})");
Matcher m = p.matcher(s);
StringBuffer sb = new StringBuffer();
while (m.find()) {
    int c = Integer.parseInt(m.group(1), 16);
    m.appendReplacement(sb, String.valueOf((char) c));
}
m.appendTail(sb);
return sb.toString();

这假定#XXXX编码UTF-16 Unicode代码点。 Unicode代码点实际上取代了#XXXX的16位范围。