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

 

 

 

 

 

 

 

 

参考地址  

Java实现JavaScript的escape()函数 https://blog.csdn.net/zhaifengmin/article/details/45166593

转载于:https://www.cnblogs.com/kiko2014551511/p/11561792.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值