Java实现JavaScript的unescape()函数

 java并没有可以直接使用的与unescape()功能相同的函数,但是java中有个很强大的工具可以曲线实现这一功能,这个API就是javax.script.ScriptEngineManager,可以实现js中的方法

 

需求:对url进行解码

刚开始打算使用URLDecoder进行解码,但出现了一个问题,如果一个错误的url(比如下图中http://www.baidu%20.com%),使用URLDecode对其进行解码,会报异常。这个url中第一个%20解码后对应字符" "(一个空格),而最后的那个%号,没有对应解码的字符,所以会报错。

最后想到了js中的unescape方法,如果没有对应解码的字符,会原样输出

JAVA代码

 

import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;

/** * 使用javax.script.ScriptEngineManager来实现js中的unescape方法
 * @author harara
 * @date 2019/7/8 9:27
 * @version v2.0.0
 */
public class Main {

    public static void main(String[] args){
        ScriptEngineManager sem = new ScriptEngineManager();
        ScriptEngine engine = sem.getEngineByExtension("js");
        //原始url
        String url = "http://www.baidu%20.com%";
        //解码后url
        String unUrl;
        try {
            unUrl = (String)engine.eval("unescape('"+url+"')");
            System.out.println(unUrl);  //输出结果为:http://www.baidu .com%
        } catch (ScriptException e) {
            e.printStackTrace();
        }
    }}

 

 

 

 

 

 

 

 

参考地址  

33人参与, 0条评论 登录后显示评论回复

你需要登录后才能评论 登录/ 注册