众所周知,JavaScript中escape() 函数可对字符串进行编码,这样就可以在所有的计算机上读取该字符串。下面,我们就来看看 Java语言中类似JavaScript中的escape() 和unescape() 转码方法,具体代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
|
public 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(); } /** * @disc 对字符串重新编码 * @param src * @return */ public static String isoToGB(String src) { String strRet = null ; try { strRet = new String(src.getBytes( "ISO_8859_1" ), "GB2312" ); } catch (Exception e) { } return strRet; } /** * @disc 对字符串重新编码 * @param src * @return */ public static String isoToUTF(String src) { String strRet = null ; try { strRet = new String(src.getBytes( "ISO_8859_1" ), "UTF-8" ); } catch (Exception e) { } return strRet; } 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( "%u6211%u4eec" )); System.out.println(isoToUTF(tmp)); } } |
输出结果为:
1
2
3
4
5
|
testing escape : 中文 %u4e2d%u6587 testing unescape :%u4e2d%u6587 我们 %u4e2d%u6587 |
总结
以上就是本文对于Java实现JS中的escape和UNescape代码分享的全部内容,希望对大家有所帮助。
感谢大家对本站的支持!
原文链接:http://blog.csdn.net/hujingn/article/details/5791130