论坛首页 Java版 Spring

java实现unescape方法

浏览 1368 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
最后更新时间:2007-04-03 关键字: java unescape

有时候你的get请求参数是中文,这时候你需要在前台用js escape它,这里是后台用java unescape的方法(当然,如果你用的是tomcat,可以通过配置server.xml来解决)

java 代码
  1. private final static byte[] val = { 0x3F0x3F0x3F0x3F0x3F0x3F,       
  2.         0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F,       
  3.         0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F,       
  4.         0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F,       
  5.         0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x000x01,       
  6.         0x020x030x040x050x060x070x080x090x3F0x3F0x3F,       
  7.         0x3F0x3F0x3F0x3F0x0A0x0B0x0C0x0D0x0E0x0F0x3F,       
  8.         0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F,       
  9.         0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F,       
  10.         0x3F0x3F0x3F0x0A0x0B0x0C0x0D0x0E0x0F0x3F0x3F,       
  11.         0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F,       
  12.         0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F,       
  13.         0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F,       
  14.         0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F,       
  15.         0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F,       
  16.         0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F,       
  17.         0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F,       
  18.         0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F,       
  19.         0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F,       
  20.         0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F,       
  21.         0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F,       
  22.         0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F,       
  23.         0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F,       
  24.         0x3F0x3F0x3F0x3F0x3F0x3F0x3F0x3F };   
  25.   
  26.   
  27. public static String unescape(String s) {       
  28.         StringBuffer sbuf = new StringBuffer();       
  29.         int i = 0;       
  30.         int len = s.length();       
  31.         while (i < len) {       
  32.         int ch = s.charAt(i);       
  33.         if ('A' <= ch && ch <= 'Z') {   
  34.         sbuf.append((char) ch);       
  35.         } else if ('a' <= ch && ch <= 'z') {        
  36.         sbuf.append((char) ch);       
  37.         } else if ('0' <= ch && ch <= '9') {    
  38.             sbuf.append((char) ch);       
  39.         } else if (ch == '-' || ch == '_'|| ch == '.' || ch == '!' || ch == '~' || ch == '*'|| ch == '\'' || ch == '(' || ch == ')') {       
  40.         sbuf.append((char) ch);       
  41.         } else if (ch == '%') {   
  42.             int cint = 0;       
  43.             if ('u' != s.charAt(i + 1)) {       
  44.             cint = (cint << 4) | val[s.charAt(i + 1)];       
  45.             cint = (cint << 4) | val[s.charAt(i + 2)];       
  46.             i += 2;       
  47.             } else {       
  48.                 cint = (cint << 4) | val[s.charAt(i + 2)];       
  49.                 cint = (cint << 4) | val[s.charAt(i + 3)];       
  50.                 cint = (cint << 4) | val[s.charAt(i + 4)];       
  51.                 cint = (cint << 4) | val[s.charAt(i + 5)];       
  52.                 i += 5;       
  53.             }       
  54.             sbuf.append((char) cint);   
  55.         } else {       
  56.             sbuf.append((char) ch);       
  57.         }       
  58.         i++;       
  59.         }       
  60.         return sbuf.toString();       
  61.     }  
   
论坛首页 Java版 Spring

跳转论坛:
JavaEye推荐