从javascript转义Unicode到Java Unicode的转换

从javascript转义Unicode到Java Unicode的转换,java,unicode,encoding,Java,Unicode,Encoding,我通过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”的值,而不

我通过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字符?

您正在尝试在运行时使用
\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());

顺便说一句:我最初使用的是StringBuilder,但事实证明Matcher只适用于StringBuffer。在Java6中,appendReplacement/appendTail只适用于StringBuffer,而不是StringBuilder。