从前台获得这样一个字符串 Aty_cnp_%u5904%u7406%u4E2D 我进行如下处理想把它转为中文
String temp = "Aty_cnp_%u5904%u7406%u4E2D";
String s = temp.substring(temp.indexOf("%")).replace("%", "\\");
System.out.println(s);
System.out.println("\u5904\u7406\u4E2D");
运行结果:
\u5904\u7406\u4E2D
处理中
为什么这一条打印语句不输出中文?
String temp = "Aty_cnp_%u5904%u7406%u4E2D";
String s = temp.substring(temp.indexOf("%")).replace("%", "\\");
System.out.println(s);
System.out.println("\u5904\u7406\u4E2D");
运行结果:
\u5904\u7406\u4E2D
处理中
为什么这一条打印语句不输出中文?
s的值是"\\\\u5904\\\\u7406\\\\u4E2D",你断点时鼠标移过去看值就知道。
打印的结果当然是"\\u5904\\u7406\\u4E2D",其中"\\"是转义后的"\"
而"\u5904\u7406\u4E2D"的值是中文,因为\u是转义后面带四个十六进制的,所以值为中文你试一下下面的程序就知道都是打印中文
String temp = "Aty_cnp_%5904";
String s = temp.substring(temp.indexOf("%")).replace("%5904", "\u5904");
System.out.println(s.toString());
System.out.println("\u5904");
String temp = "%u5904%u7406%u4E2D";
String[] str = temp.split("%u");
String s1 = "";
for(int i=1; i<str.length; i++){
s1 = s1+(char)Integer.parseInt(str[i],16);
}
System.out.println(s1);