加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

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

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

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=remark rows=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));

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有