您的位置:首页 > Web前端 > JavaScript

java对应javascript的escape,unescape进行解码

2012-11-07 10:08 429 查看
/**

* 加码解码工具

* @author lwm

*

*/

public class Encode {

/*

* 对应javascript的escape()函数, 加码后的串可直接使用javascript的unescape()进行解码

*/

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();

}

/*

* 对应javascript的unescape()函数, 可对javascript的escape()进行解码

*/

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();

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: