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); }
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条。后面有点问题。但是我相信只要改一改就行了。谢谢您的解答。但是能麻烦您告诉我为什么要这样做吗?衷心感谢
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);
}
首都经济报道:走到东辛屯去吃吗 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条。后面有点问题。但是我相信只要改一改就行了。谢谢您的解答。但是能麻烦您告诉我为什么要这样做吗?衷心感谢
跟
String s1 = "2007年央视春节联欢晚会";
在编译器看来,二者是完全等价的,一模一样,没有任何的区别,它会做转化。List<String> list=UrlCharsetTest.get();
这是运行时获取的,少了编译器的转化,所以得手动转化。
骚年,你还是没弄明白compile-time和runtime的区别
骚年,你还是没弄明白compile-time和runtime的区别
求不吝赐教