private String unicode2String(String s) {
if(s == null)
return null;
StringBuffer result = new StringBuffer();
int tempI,i,ch;
for(i=0;i<s.length();i++) {
//如果是Unicode(开始是'
//u ') 则将它转换成对应的汉字
if((ch = s.charAt(i)) == '//') {
tempI = i;
i+=2;
while(i<s.length()&&s.charAt(i) == 'u') {
i++;
}
if(i+4<=s.length()) { //将Unicode中十六进制数转换成十进制数
ch = Integer.parseInt(s.substring(i,i+4),16);
i+= 3;
}
else {
i = tempI;
}
} //对于汉字,将它从整形数据转换成字符后,附在result后,而对于英文字符,直接使用即可
result.append((char)ch) ;
}
return result.toString();
}
public String tmptrans(String s)
{
int i=s.length();
int j=0;
String s5="";
String s6="";
for(;j<i;j++){
String s2 = s.substring(j, j + 1);
if(s2.equals("%"))
{
String s4 = s.substring(j, j + 3);
if(s4.equals("\"))
s5 = "//";
if(s4.equals("""))
s5 = "/"";
if(s4.equals("<"))
s5 = "<";
if(s4.equals(">"))
s5 = ">";
if(s4.equals(":"))
s5 = ":";
if(s4.equals(";"))
s5 = ";";
if(s4.equals("'"))
s5 = "'";
if(s4.equals("!"))
s5 = "!";
if(s4.equals("#"))
s5 = "#";
if(s4.equals("$"))
s5 = "$";
if(s4.equals("%"))
s5 = "%";
if(s4.equals("^"))
s5 = "^";
if(s4.equals("&"))
s5 = "&";
if(s4.equals("("))
s5 = "(";
if(s4.equals(")"))
s5 = ")";
if(s4.equals("="))
s5 = "=";
if(s4.equals("{"))
s5 = "{";
if(s4.equals("}"))
s5 = "}";
if(s4.equals("["))
s5 = "[";
if(s4.equals("]"))
s5 = "]";
if(s4.equals(" "))
s5 = " ";
if(s4.equals(","))
s5 = ",";
if(s4.equals("?"))
s5 = "?";
if(s4.equals("|"))
s5 = "|";
if(s4.equals("`"))
s5 = "`";
if(s4.equals("~"))
s5 = "~";
if(s4.equals("
"))
s5 = " ";
if(s4.equals("
"))
s5 = " ";
if(s4.equals(" "))
s5 = " ";
s6 += s5;
j += 3;
}
else
{
s6 += s2;
j++;
}
}
return s6;
}
public String unescape(String s)
{
if(s == null)
return s;
if(s.equals(""))
return s;
int i = s.indexOf("%u");
if(i < 0)
return tmptrans(s);
String s1 = s.substring(0, i);
String s2 = tmptrans(s1);
String s3 = "";
if(i + 6 < s.length())
{
s1 = s.substring(i, i + 6);
s3 = s.substring(i + 6);
} else
{
s1 = s.substring(i);
s3 = "";
}
s1 = s1.replace('%', '//');
s2 += unicode2String(s1);
return s2 + unescape(s3);
}
}