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