Java 中escape()和unescape()的使用
(2009-05-19 17:37:47)
标签:
1.js中的中escape()和unescape()的使用
2.Java 中escape()和unescape()的使用实例
java代码:自己定义的编译和反编译函数,直接引用就可以了。
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();
}
}
jsp中部分代码:
String pub_remark = "remark.pub_remark_DW";
String claimId = request.getParameter("mainId");//赔案表ID
String taskName = request.getParameter("taskName");//任务名称
%>
公共备注栏function saveRemark() {
var remark = escape(document.forms(0).remark.value);
if(remark == null || remark == "") {
alert("请您先输入备注栏信息,然后再保存!");return;
}else {
var param = ","+","+remark;
var flag = tool.sendXml([""],"remarkAction","savePubRemarkInfo",param);
}
}
将上面的值编译后传到后台:
如果字符串格式是如下形式:中间含有enter符号 ,经过escape() 函数编译后变成”%0D%0A“
需要过滤过来如下代码:
String remark2="";
String remark3="";
boolean flag = false;
if(remark.indexOf("%0D%0A")!=-1){
flag = true;
String[] arr = remark.split("%0D%0A");
for(int i=0;i
remark2 +=arr[i];
}
}
if(flag){
remark3 = remark2;
}else{
remark3 = remark;
}
//冯伟 2009-05-19
pubRemarkVo.setCTaskRemark(EscapeUnescape.unescape(remark3));