java版本的escape和unescape函数

原创 2002年04月22日 09:29:00

在作b/s程序的时候经常为了汉字编码的问题头疼不已,一直想在偷懒等有人写个java 版的escape/unescape来给我用,昨晚终于忍无可忍了,自己写了一个。没有来得及严密测试,要发现bug了mail给我(stoneat163@163.net)

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();
 }

 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(tmp));
 }
}

Java中的escape,unescape方法

Java中的escape,unescape方法,类似JavaScript中的escape() 和unescape() 转码方法
  • hujingn
  • hujingn
  • 2010年08月05日 17:06
  • 12370

利用StringEscapeUtils对字符串进行各种转义与反转义(Java)

apache工具包common-lang中有一个很有用的处理字符串的工具类,其中之一就是StringEscapeUtils,这个工具类是在2.3版本以上加上的去的,利用它能很方便的进行html,xml...
  • chenleixing
  • chenleixing
  • 2015年02月03日 20:51
  • 104075

java版本的escape和unescape函数

在作b/s程序的时候经常为了汉字编码的问题头疼不已,一直想在偷懒等有人写个java 版的escape/unescape来给我用,昨晚终于忍无可忍了,自己写了一个。没有来得及严密测试,要发现bug了ma...
  • emu
  • emu
  • 2002年04月22日 09:29
  • 3124

java模拟js的escape和unescape函数

java模拟js的escape和unescape函数 public class DD { private static String[] hex = { "00", "01", "02"...
  • lululove19870526
  • lululove19870526
  • 2015年08月11日 17:49
  • 983

Java式实现JS的Escape以及Unescape

http://www.blogjava.net/xiaoyi/articles/298203.html public class EscapeUnescape {     public...
  • az44yao
  • az44yao
  • 2014年02月10日 08:42
  • 4219

escape/unescape 编码的Java 实现

  • 2008年03月09日 10:16
  • 6KB
  • 下载

StringEscapeUtils类的转义与反转义方法

org.apache.commons.lang.StringEscapeUtils 类可以对js sql html xml等代码进行转义!用来处理前端js注入代码 SQL特殊字符转义  ...
  • niuch1029291561
  • niuch1029291561
  • 2013年12月17日 15:27
  • 37918

java实现js的escape和unescape

  • 2013年06月05日 21:11
  • 6KB
  • 下载

java对应javascript的escape,unescape进行解码

/** * 加码解码工具 * @author lwm * */ public class Encode { /* * 对应javascript的escape()函数, 加码后的串可直...
  • zhujyy110
  • zhujyy110
  • 2012年11月07日 10:08
  • 539

C#版的 Escape() 和 Unescape() 函数分享

Escape: 复制代码 代码如下: public static string Escape(string str) { StringBuilder sb = new StringB...
  • az44yao
  • az44yao
  • 2014年02月10日 09:08
  • 1531
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java版本的escape和unescape函数
举报原因:
原因补充:

(最多只允许输入30个字)