博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java中JavaScript unescape与escape函数算法
阅读量:4696 次
发布时间:2019-06-09

本文共 2502 字,大约阅读时间需要 8 分钟。

/**     * JavaScript escape函数算法      * @param value     * @return     */    public static String escape(String value){        StringBuffer buffer = new StringBuffer();        int length = value.length();        int ch = 0;        for (int i = 0; i < length; i  ) {            ch = value.charAt(i);            if ('A' <= ch && ch <= 'Z')buffer.append((char) ch);            else if ('a' <= ch && ch <= 'z')buffer.append((char) ch);            else if ('0' <= ch && ch <= '9')buffer.append((char) ch);            else if (ch == '-' || ch == '_'    || ch == '.' || ch == '!' || ch == '~' || ch == '*' || ch == '\'' || ch == '(' || ch == ')')buffer.append((char) ch);            else if (ch <= 0x007F) {buffer.append('%');buffer.append(hex[ch]);}            else{buffer.append('%');buffer.append('u');buffer.append(hex[(ch >>> 8)]);buffer.append(hex[(0x00FF & ch)]);}        }        return buffer.toString();    }        /**     * JavaScript unescape函数算法      * unescape() 函数可对通过 escape() 编码的字符串进行解码。      * @param value     * @return     */    public static String unescape(String value) {        StringBuffer buffer = new StringBuffer();        int i = 0;        int length = value.length();        int ch = 0;        while (i < length) {            ch = value.charAt(i);            if ('A' <= ch && ch <= 'Z')buffer.append((char) ch);            else if ('a' <= ch && ch <= 'z')buffer.append((char) ch);            else if ('0' <= ch && ch <= '9')buffer.append((char) ch);            else if (ch == '-' || ch == '_' || ch == '.' || ch == '!' || ch == '~' || ch == '*' || ch == '\'' || ch == '(' || ch == ')')buffer.append((char) ch);            else if (ch == '%') {                int cint = 0;                if('u' != value.charAt(i + 1)) {                    cint = (cint << 4) | val[value.charAt(i + 1)];                    cint = (cint << 4) | val[value.charAt(i + 2)];                    i  = 2;                }                else {                    cint = (cint << 4) | val[value.charAt(i + 2)];                    cint = (cint << 4) | val[value.charAt(i + 3)];                    cint = (cint << 4) | val[value.charAt(i + 4)];                    cint = (cint << 4) | val[value.charAt(i + 5)];                    i  = 5;                }                buffer.append((char) cint);            }            else buffer.append((char) ch);            i  ;        }        return buffer.toString();    }

如果Java或Android中请求连接带有特殊符号可以使用这两个函数

转载于:https://www.cnblogs.com/jRoger/articles/2574738.html

你可能感兴趣的文章
Linux离线同步时间
查看>>
Linux signal 编程(转载)
查看>>
什么是线程安全和线程不安全
查看>>
Beta版本冲刺———第二天
查看>>
java8 Lambda Stream collect Collectors 常用实例
查看>>
HTML网页标记&nbsp;标签大全
查看>>
iOS Crash文件的解析(一)
查看>>
Win10中的IIS10安装php manager和IIS URL Rewrite
查看>>
JavaScript之面向对象与原型笔记整理--------创建对象之原型(2)
查看>>
Objective-C的hook方案(一): Method Swizzling
查看>>
JSP & EL & JSTL
查看>>
DHTML中window的使用
查看>>
Matplotlib安装感想
查看>>
poj 2479 (DP)
查看>>
asp 文件上传 代码
查看>>
arm-linux-androideabi-addr2line
查看>>
将 SharePoint 2010 网站集升级到 2013 (含沙盒方案)
查看>>
windows 下安装Python
查看>>
674. Longest Continuous Increasing Subsequence最长连续递增子数组
查看>>
670. Maximum Swap 允许交换一个数 求最大值
查看>>