从前台获得这样一个字符串 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
处理中
为什么这一条打印语句不输出中文?

解决方案 »

  1.   

    测试发现s.equals("\\u5904\\u7406\\u4E2D")为true
      

  2.   

    你的java基础比较差了点。
    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");
      

  3.   

    按错了,其中s.toString()是不必要的,
      

  4.   

    先弄成字符再说吧!
    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);