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