http 编码

 class  EscapeUnescape{ public static String  escape (String src) {  int i;  char j;  StringBuffer tmp = new StringBuffer();  tmp.ensureCapacity(src.length()*6);  for (i=0;i<src.length() ;i++ )  {   j = src.charAt(i);   if (Character.isDigit(j) || Character.isLowerCase(j) || Character.isUpperCase(j))    tmp.append(j);   else    if (j<256)    {    tmp.append( "%" );    if (j<16)     tmp.append( "0" );    tmp.append( Integer.toString(j,16) );    }    else    {    tmp.append( "%u" );    tmp.append( Integer.toString(j,16) );    }  }  return tmp.toString(); } public static String  unescape (String src) {  StringBuffer tmp = new StringBuffer();  tmp.ensureCapacity(src.length());  int  lastPos=0,pos=0;  char ch;  while (lastPos<src.length())  {   pos = src.indexOf("%",lastPos);   if (pos == lastPos)    {    if (src.charAt(pos+1)=='u')     {     ch = (char)Integer.parseInt(src.substring(pos+2,pos+6),16);     tmp.append(ch);     lastPos = pos+6;     }    else     {     ch = (char)Integer.parseInt(src.substring(pos+1,pos+3),16);     tmp.append(ch);     lastPos = pos+3;     }    }   else    {    if (pos == -1)     {     tmp.append(src.substring(lastPos));     lastPos=src.length();     }    else     {     tmp.append(src.substring(lastPos,pos));    lastPos=pos;     }    }  }  return tmp.toString(); } public static void main(String[] args)  {  String tmp="~!@#$%^&*()_+|\\=-,./?><;'][{}\"";  System.out.println("testing escape : "+tmp);  tmp =escape(tmp);  System.out.println(tmp);  System.out.println("testing unescape :"+tmp);  System.out.println(unescape(tmp)); }}





你可能感兴趣的:(http)