从JavaScript转义的Unicode到Java Unicode转换(Conversion fr

2019-10-17 17:36发布

我通过具有这种性格在其HTTP请求传递的查询字符串:

%u54E6

我想生成包含实际的中国性格让我可以在应用程序的不同部分使用一个字符串,我已经使用这个代码的尝试:

String foo = "%u54E6";
String ufoo = new String(foo.replaceAll("%u([a-zA-Z0-9]{4})", "\\" + "u$1"));
System.out.println("ufoo: " + ufoo);

不幸的是,我得到的是“u54E6”打印到控制台的值,而不是中国人的性格。

有没有一种简单的方法,以原始的字符串转换成Java中的Unicode字符?

Answer 1:

您正在尝试使用\u逃逸的运行时间。 这些只是编译时。 相反,你应该能够这样做:

String foo = "%u54E6";
Pattern p = Pattern.compile("%u([a-zA-Z0-9]{4})");
Matcher m = p.matcher(foo);
StringBuffer sb = new StringBuffer();
while (m.find()) {
  m.appendReplacement(sb,
      String.valueOf((char) Integer.parseInt(m.group(1), 16)));
}
m.appendTail(sb);
System.out.println(sb.toString());


文章来源: Conversion from javascript-escaped Unicode to Java Unicode