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("%5C"))
s5 = "//";
if(s4.equals("%22"))
s5 = "/"";
if(s4.equals("%3C"))
s5 = "<";
if(s4.equals("%3E"))
s5 = ">";
if(s4.equals("%3A"))
s5 = ":";
if(s4.equals("%3B"))
s5 = ";";
if(s4.equals("%27"))
s5 = "'";
if(s4.equals("%21"))
s5 = "!";
if(s4.equals("%23"))
s5 = "#";
if(s4.equals("%24"))
s5 = "$";
if(s4.equals("%25"))
s5 = "%";
if(s4.equals("%5E"))
s5 = "^";
if(s4.equals("%26"))
s5 = "&";
if(s4.equals("%28"))
s5 = "(";
if(s4.equals("%29"))
s5 = ")";
if(s4.equals("%3D"))
s5 = "=";
if(s4.equals("%7B"))
s5 = "{";
if(s4.equals("%7D"))
s5 = "}";
if(s4.equals("%5B"))
s5 = "[";
if(s4.equals("%5D"))
s5 = "]";
if(s4.equals("%20"))
s5 = " ";
if(s4.equals("%2C"))
s5 = ",";
if(s4.equals("%3F"))
s5 = "?";
if(s4.equals("%7C"))
s5 = "|";
if(s4.equals("%60"))
s5 = "`";
if(s4.equals("%7E"))
s5 = "~";
if(s4.equals("%0A"))
s5 = " ";
if(s4.equals("%0D"))
s5 = " ";
if(s4.equals("%09"))
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);
}
}
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("%5C"))
s5 = "//";
if(s4.equals("%22"))
s5 = "/"";
if(s4.equals("%3C"))
s5 = "<";
if(s4.equals("%3E"))
s5 = ">";
if(s4.equals("%3A"))
s5 = ":";
if(s4.equals("%3B"))
s5 = ";";
if(s4.equals("%27"))
s5 = "'";
if(s4.equals("%21"))
s5 = "!";
if(s4.equals("%23"))
s5 = "#";
if(s4.equals("%24"))
s5 = "$";
if(s4.equals("%25"))
s5 = "%";
if(s4.equals("%5E"))
s5 = "^";
if(s4.equals("%26"))
s5 = "&";
if(s4.equals("%28"))
s5 = "(";
if(s4.equals("%29"))
s5 = ")";
if(s4.equals("%3D"))
s5 = "=";
if(s4.equals("%7B"))
s5 = "{";
if(s4.equals("%7D"))
s5 = "}";
if(s4.equals("%5B"))
s5 = "[";
if(s4.equals("%5D"))
s5 = "]";
if(s4.equals("%20"))
s5 = " ";
if(s4.equals("%2C"))
s5 = ",";
if(s4.equals("%3F"))
s5 = "?";
if(s4.equals("%7C"))
s5 = "|";
if(s4.equals("%60"))
s5 = "`";
if(s4.equals("%7E"))
s5 = "~";
if(s4.equals("%0A"))
s5 = " ";
if(s4.equals("%0D"))
s5 = " ";
if(s4.equals("%09"))
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);
}
}