众所周知,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