Java 中escape()和unescape()的使用

Java 中escape()和unescape()的使用

(2009-05-19 17:37:47)

25151551_C9EC.gif转载

标签:

it


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中部分代码:

<%@ page contentType="text/html;charset=gb2312" language="java" %>
<%@ taglib uri="/WEB-INF/taglib/labour.tld" prefix="labour"%>
<% 
 String pub_remark = "remark.pub_remark_DW";
   String claimId = request.getParameter("mainId");//赔案表ID
   String taskName = request.getParameter("taskName");//任务名称
%>
<html>
 <head>
  <title>公共备注栏</title>
  <script type="text/javascript" language="javaScript">
     function saveRemark() {
     var remark = escape(document.forms(0).remark.value);  
    if(remark == null || remark == "") {
     alert("请您先输入备注栏信息,然后再保存!");return;
    }else {
     var param = "<%=taskName%>,"+"<%=claimId%>,"+remark;
     var flag = tool.sendXml(["<%=pub_remark%>"],"remarkAction","savePubRemarkInfo",param);
        }
   }
  </script>
 </head>
 <labour:base />
<labour:body bgcolor="#E6F2F9">
 <labour:form action="null" method="POST">
  <table width="600" align="center">
      <tr class=JXDwCommon>      

<td noWrap align=left><TEXTAREA class=JXHTCInput style="WIDTH: 720px" name=remarkrows=3 type="textarea" maxlength="500"></TEXTAREA></td>
       </tr>
   </table>
 </labour:form>
</labour:body>
</html>

将上面的值编译后传到后台:

如果字符串格式是如下形式:中间含有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<arr.length;i++){
     remark2 +=arr[i];
    }
   }
   if(flag){
    remark3 = remark2;
   }else{
    remark3 = remark;
   }
   //冯伟 2009-05-19
   pubRemarkVo.setCTaskRemark(EscapeUnescape.unescape(remark3));


转载于:https://my.oschina.net/u/2349816/blog/483684

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值