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
          主站蜘蛛池模板: 大城县| 商都县| 湖口县| 普定县| 翁源县| 泗水县| 寻乌县| 那曲县| 林甸县| 青岛市| 吉首市| 廉江市| 贵阳市| 思南县| 台山市| 沅江市| 泰安市| 化德县| 礼泉县| 上思县| 吉水县| 鄂托克旗| 肥乡县| 富蕴县| 新余市| 新津县| 揭阳市| 栾川县| 抚顺县| 富蕴县| 连城县| 湟源县| 淅川县| 固原市| 秭归县| 麦盖提县| 营口市| 怀宁县| 金门县| 泽库县| 阜康市|