Java相当于JavaScript的反转义函数

Java equivalent to JavaScript unescape function

本文关键字:转义 函数 相当于 JavaScript Java      更新时间:2023-09-26

Java编程语言中是否有类似JavaScript的非转义函数?也就是说,如果我的输入是字符串"I%20need%20help%21",那么输出必须是"I need help!",例如

谢谢!

根据我的经验,如果编码字符串中存在非ascii字符,URLDecoder.decode可能会失败。例如下面的代码:

URLDecoder.decode("%u017C", "UTF-8"); // %u017C is the result of running in Javascript escape('ż')

抛出以下异常:

Exception in thread "main" java.lang.IllegalArgumentException: URLDecoder: Illegal hex characters in escape (%) pattern - For input string: "u0"

解决这个问题的最好方法,我知道(虽然笨拙)只是在Java中运行Javascript:(

String jsEscapedString = "%u017C";
ScriptEngineManager factory = new ScriptEngineManager();
ScriptEngine engine = factory.getEngineByName("JavaScript");
String result = (String) engine.eval("unescape('" + jsEscapedString + "')");

灵感来自Siva R Vaka的帖子

您可以使用URLDecoder。假设您使用的是UTF-8:

String result = URLDecoder.decode(s, "UTF-8");

试试这个

URLDecoder dec = new URLDecoder();
        String val = dec.decode("I%20need%20help%21","UTF-8");
        System.out.println(val);

这很好@Nrj,但是开发人员必须静态地调用它

URLDecoder.decode("I%20need%20help%21","UTF-8");