日期:2014-05-20  浏览次数:20752 次

求教一个很蛋疼的问题
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;

public class CharsetTest {
public static void main(String[] args) throws UnsupportedEncodingException {
List<String> list=UrlCharsetTest.get();

StringBuffer buffer=new StringBuffer();
for (int i = 0; i < list.size(); i++) {

System.out.println(list.get(i));

}


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

System.out.println(s1);
}

}



output:


110825\u5927\u5b66\u751f\u4e86\u6ca1-\u4ed6\u4eec\u7684\u804c\u4e1a\u6bd4007\u8fd8\u795e\u79d8
\u9996\u90fd\u7ecf\u6d4e\u62a5\u9053\uff1a\u8d70\u5230\u4e1c\u8f9b\u5c6f\u53bb\u5403\u5417 20121007
\u82f1\u56fd\u56fd\u5bb6\u6c7d\u8f66\u535a\u7269\u9986\u4e3e\u529e007\u5f71\u7247\u6c7d\u8f66\u5c55
\u6625\u8282\u538b\u5c81\u94b1\u8d77\u4ef7500 70\u540e80\u540e\u5927\u558a\
\u72d7\u72d7\u5316\u8eab\u201c007\u201d\u6f14\u51fa\u7279\u5de5
007\u4e39\u5c3c\u5c14\u00b7\u514b\u96f7\u683c\u4f4e\u8c03\u5b8c\u5a5a
2007\u5e74\u592e\u89c6\u6625\u8282\u8054\u6b22\u665a\u4f1a
\u300a007\uff1a\u5929\u964d\u6740\u673a\u300b\u6b63\u5728\u82f1\u56fd\u4f26\u6566\u70ed\u62cd\u4e2d
\u745e\u58eb007\u624b\u8868\u4ee515\u4e07\u6b27\u5143\u88ab\u62cd\u5356
\u963f\u68ee\u7eb3\u5b98\u65b9\u8d5b\u5b63\u56de\u987e2007/2008
\u4e09\u8f86\u8f66\u505c\u4e00\u6392 \u5c3e\u6570\u90fd\u662f\u201c007\u201d
\u963f\u68ee\u7eb3\u5b98\u65b9\u8d5b\u5b63\u56de\u987e2006/2007
\u8d75\u5fe0\u79655\u4ebf\u79c1\u4eba\u4f1a\u6240\u66dd\u5149 \u5b89\u4fdd\u582a\u6bd4007
\u8d75\u5fe0\u7965\u79c1\u4eba\u4f1a\u6240\u4ef7\u503c5\u4ebf \u5b89\u4fdd\u582a\u6bd4007
\u66dd\u725b\u8389\u4e0e\u56db\u5c81\u534a\u5973\u513f\u767d\u8863\u6bcd\u5973\u88c5\u8fd1\u7167 
\u674e\u54cd\u5b59\u9a81\u9a81\u516c\u5f00\u604b\u60c5 \u88ab\u66dd\u5df2\u9886\u8bc1
\u7eaa\u5f55\u7247\u63ed\u79d8\u963f\u624e\u4f26\u5361\u7684\u6210\u529f
\u8389\u5a1c\u00b7\u838e\u4f0a\u514b\u6bd4\u57fa\u5c3c\u55b7\u8840\u5199\u771f
\u4f50\u5c71\u7231\u6027\u611f\u5236\u670d\u8bf1\u60d1
\u4f50\u5c71\u7231\u6027\u611f\u5236\u670d\u8bf1\u60d1
\u66dd51\u5c81\u5173\u4e4b\u7433\u60c5\u5b9a\u53f0\u767e\u4ebf\u5bcc\u8c6a \u660e\u5e742.14\u5b8c\u5a5a
\u963f\u6735\u5185\u8863\u79c0\u5927\u5c3a\u5ea6\u7206\u5de8\u4e73\u5356\u6027\u611f
\u963f\u6735\u5185\u8863\u79c0\u5927\u5c3a\u5ea6\u7206\u5de8\u4e73\u5356\u6027\u611f
\u6797\u5fd7\u73b2\u65f6\u5c1a\u5199\u771f\u6027\u611f\u60f9\u706b\u5c3a\u5ea6\u5347\u7ea7
\u6797\u5fd7\u73b2\u65f6\u5c1a\u5199\u771f\u6027\u611f\u60f9\u706b\u5c3a\u5ea6\u5347\u7ea7
2007年央视春节联欢晚会




list里面的无法打印出中文,但是最后那一句输入是list里面第一条拿出来的,这很奇怪。为什么list里面的不能打印出中文。
求大神解答
谢谢了
------解决方案--------------------
你在字符串里面直接写 "\u5e74",编译后就已经是“中文”了。

你把字符串和list中的某行,分别转为 char 数组,一个字符一个字符的输出来看看。
------解决方案--------------------

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;