我有一个通过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字符?
答案 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());