[Java] java实现javascript中的escape和unescape函数 →→→→→进入此内容的聊天室

来自 , 2020-05-29, 写在 Java, 查看 107 次.
URL http://www.code666.cn/view/b5b41fac
  1. /**
  2.  * java实现javascript中的escape和unescape函数
  3.  * 多用于URL编码与解码
  4.  */
  5. public class EscapeUnescape {
  6.         public static String escape(String src) {
  7.                 int i;
  8.                 char j;
  9.                 StringBuffer tmp = new StringBuffer();
  10.                 tmp.ensureCapacity(src.length() * 6);
  11.                 for (i = 0; i < src.length(); i++) {
  12.                         j = src.charAt(i);
  13.                         if (Character.isDigit(j) || Character.isLowerCase(j)
  14.                                         || Character.isUpperCase(j))
  15.                                 tmp.append(j);
  16.                         else if (j < 256) {
  17.                                 tmp.append("%");
  18.                                 if (j < 16)
  19.                                         tmp.append("0");
  20.                                 tmp.append(Integer.toString(j, 16));
  21.                         } else {
  22.                                 tmp.append("%u");
  23.                                 tmp.append(Integer.toString(j, 16));
  24.                         }
  25.                 }
  26.                 return tmp.toString();
  27.         }
  28.  
  29.         public static String unescape(String src) {
  30.                 StringBuffer tmp = new StringBuffer();
  31.                 tmp.ensureCapacity(src.length());
  32.                 int lastPos = 0, pos = 0;
  33.                 char ch;
  34.                 while (lastPos < src.length()) {
  35.                         pos = src.indexOf("%", lastPos);
  36.                         if (pos == lastPos) {
  37.                                 if (src.charAt(pos + 1) == 'u') {
  38.                                         ch = (char) Integer.parseInt(
  39.                                                         src.substring(pos + 2, pos + 6), 16);
  40.                                         tmp.append(ch);
  41.                                         lastPos = pos + 6;
  42.                                 } else {
  43.                                         ch = (char) Integer.parseInt(
  44.                                                         src.substring(pos + 1, pos + 3), 16);
  45.                                         tmp.append(ch);
  46.                                         lastPos = pos + 3;
  47.                                 }
  48.                         } else {
  49.                                 if (pos == -1) {
  50.                                         tmp.append(src.substring(lastPos));
  51.                                         lastPos = src.length();
  52.                                 } else {
  53.                                         tmp.append(src.substring(lastPos, pos));
  54.                                         lastPos = pos;
  55.                                 }
  56.                         }
  57.                 }
  58.                 return tmp.toString();
  59.         }
  60.  
  61.         public static void main(String[] args) {
  62.                 String tmp = "钓鱼岛是中国的!";
  63.  
  64.                 System.out.println("编码:   " + escape(tmp));
  65.                 System.out.println("解码:   " + unescape(tmp));
  66.         }
  67. }

回复 "java实现javascript中的escape和unescape函数"

这儿你可以回复上面这条便签

captcha