你在字符串里面直接写 "\u5e74",编译后就已经是“中文”了。你把字符串和list中的某行,分别转为 char 数组,一个字符一个字符的输出来看看。

解决方案 »

  1.   


    System.out.println(parseUnicode(list.get(i)));
    public static String parseUnicode(String line){
         int len=line.length();
         char[] out=new char[len];//保存解析以后的结果
         int outLen=0;
         for(int i=0;i<len;i++){
          char aChar=line.charAt(i); 
          if(aChar=='\\'){
           aChar=line.charAt(++i);
           if(aChar=='u'){
            int value=0;
         for(int j=0;j<4;j++){
            aChar=line.charAt(++i);
             switch (aChar) {
             case '0': case '1': case '2': case '3': case '4':
             case '5': case '6': case '7': case '8': case '9':
              value = (value << 4) + aChar - '0';
             break;
             case 'a': case 'b': case 'c':
             case 'd': case 'e': case 'f':
             value = (value << 4) + 10 + aChar - 'a';
             break;
             case 'A': case 'B': case 'C':
             case 'D': case 'E': case 'F':
             value = (value << 4) + 10 + aChar - 'A';
             break;
             default: throw new IllegalArgumentException("Malformed \\uxxxx encoding.");
            }
         }
         out[outLen++]=(char)value;
        }else{
            if (aChar == 't') aChar = '\t'; 
                        else if (aChar == 'r') aChar = '\r';
                        else if (aChar == 'n') aChar = '\n';
                        else if (aChar == 'f') aChar = '\f'; 
                        out[outLen++] = aChar;
        }
       }else{
           out[outLen++] = aChar;
       }
      }
      return new String (out, 0, outLen);
     }
      

  2.   

    110825大学生了没-他们的职业比007还神秘
    首都经济报道:走到东辛屯去吃吗 20121007
    英国国家汽车博物馆举办007影片汽车展
    Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 75
    at java.lang.String.charAt(Unknown Source)
    at CharsetTest.parseUnicode(CharsetTest.java:30)
    at CharsetTest.main(CharsetTest.java:13)
    只输出了前3条。后面有点问题。但是我相信只要改一改就行了。谢谢您的解答。但是能麻烦您告诉我为什么要这样做吗?衷心感谢
      

  3.   

    String s1="2007\u5e74\u592e\u89c6\u6625\u8282\u8054\u6b22\u665a\u4f1a";

    String s1 = "2007年央视春节联欢晚会";
    在编译器看来,二者是完全等价的,一模一样,没有任何的区别,它会做转化。List<String> list=UrlCharsetTest.get();
    这是运行时获取的,少了编译器的转化,所以得手动转化。
      

  4.   

    我才开始也是认为是编译时候的问题,所以才开始我是先把list里面的东西取出来赋值给一个String最后再来输出这个String。这个应该编译能过吧,但是还是不能够过
      

  5.   


    骚年,你还是没弄明白compile-time和runtime的区别
      

  6.   


    骚年,你还是没弄明白compile-time和runtime的区别
    求不吝赐教
      

  7.   

    编译器在把java源代码转化成class文件的时候,这期间它会做很多事情,其中就有解析java源文件中存在的unicode字符串的过程。生成的class文件里面是看不到\u****的,已经被转化掉了。javap反编译一下字节码就知道了