从javascript转义的Unicode转换为Java Unicode

时间:2009-09-29 16:18:09

标签: 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'打印到控制台的值,而不是中文字符。

是否有一种简单的方法可以将原始字符串转换为Java中的Unicode字符?

1 个答案:

答案 0 :(得分:3)

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