byterat

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            54 隨筆 :: 0 文章 :: 15 評論 :: 0 Trackbacks

          /**
           * 加碼解碼工具
           * @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();
           }

          }

          posted on 2008-01-11 17:08 比特鼠 閱讀(1838) 評論(0)  編輯  收藏 所屬分類: Java
          主站蜘蛛池模板: 孝感市| 宣武区| 商水县| 来宾市| 遵义市| 台南市| 黎城县| 玛纳斯县| 通渭县| 大庆市| 宽甸| 新野县| 兴海县| 肇东市| 修水县| 江油市| 临夏县| 拉萨市| 平昌县| 万源市| 离岛区| 德令哈市| 印江| 清原| 罗甸县| 甘肃省| 丹阳市| 宁城县| 长治市| 安龙县| 蒲江县| 凤庆县| 慈溪市| 沅陵县| 克东县| 师宗县| 龙胜| 庆阳市| 民县| 营山县| 油尖旺区|