java url编码与解码 (钓鱼岛是中国的!)

来源:互联网 发布:阿里云80端口备案 编辑:程序博客网 时间:2024/05/17 02:57

源代码:http://yuncode.net/code/c_5060109b8555a82

主要是对js的url编码进行解码

 

运行效果:

 

01/**

02 * java实现javascript中的escape和unescape函数
03 * 多用于URL编码与解码
04 */
05public class EscapeUnescape {
06    publicstatic String escape(String src) {
07        inti;
08        charj;
09        StringBuffer tmp =new StringBuffer();
10        tmp.ensureCapacity(src.length() *6);
11        for(i = 0; i < src.length(); i++) {
12            j = src.charAt(i);
13            if(Character.isDigit(j) || Character.isLowerCase(j)
14                    || Character.isUpperCase(j))
15                tmp.append(j);
16            elseif (j < 256) {
17                tmp.append("%");
18                if(j < 16)
19                    tmp.append("0");
20                tmp.append(Integer.toString(j,16));
21            }else {
22                tmp.append("%u");
23                tmp.append(Integer.toString(j,16));
24            }
25        }
26        returntmp.toString();
27    }
28  
29    publicstatic String unescape(String src) {
30        StringBuffer tmp =new StringBuffer();
31        tmp.ensureCapacity(src.length());
32        intlastPos = 0, pos =0;
33        charch;
34        while(lastPos < src.length()) {
35            pos = src.indexOf("%", lastPos);
36            if(pos == lastPos) {
37                if(src.charAt(pos + 1) =='u') {
38                    ch = (char) Integer.parseInt(
39                            src.substring(pos +2, pos + 6),16);
40                    tmp.append(ch);
41                    lastPos = pos +6;
42                }else {
43                    ch = (char) Integer.parseInt(
44                            src.substring(pos +1, pos + 3),16);
45                    tmp.append(ch);
46                    lastPos = pos +3;
47                }
48            }else {
49                if(pos == -1) {
50                    tmp.append(src.substring(lastPos));
51                    lastPos = src.length();
52                }else {
53                    tmp.append(src.substring(lastPos, pos));
54                    lastPos = pos;
55                }
56            }
57        }
58        returntmp.toString();
59    }
60  
61    publicstatic void main(String[] args) {
62        String tmp ="钓鱼岛是中国的!";
63  
64        System.out.println("编码:   "+ escape(tmp));
65        System.out.println("解码:   "+ unescape(tmp));
66    }
67}