【问题标题】:How do I Unescape a String returned from Javascript on Android?如何在 Android 上取消转义从 Javascript 返回的字符串?
【发布时间】:2016-01-05 20:04:53
【问题描述】:

我正在尝试从 Android 应用中的 WebView 中提取一些网页源代码。我已经成功了,使用这个:http://lexandera.com/2009/01/extracting-html-from-a-webview/

加上这个让它在 KitKat 之后工作:

 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
        webView.evaluateJavascript(
                "(function() { return ('<html>'+document.getElementsByTagName('html')[0].innerHTML+'</html>'); })();",
                new ValueCallback<String>() {
                    @Override
                    public void onReceiveValue(String html) {
                        outputViewer.setText(html);
                    }
                });
    }else{
        webView.loadUrl("javascript:window.HTMLOUT.showHTML" +
                "('<html>'+document.getElementsByTagName('html')[0].innerHTML+'</html>');");
    }

现在,问题是非 kitkat 版本返回的正是我想要的。然而,KitKat 版本会返回代码的转义版本,如下所示:

"\u003Chtml>\u003Chead>\n\t\u003Cmeta charset=\"UTF-8\">\n\t\u003Cmeta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n\t\u003Clink rel=\"profile\" href=\"http://gmpg.org/xfn/11\">\n\t\u003Clink rel=\"pingback\" 

有没有一种直接的方法可以在 Android 上取消转义该字符串?

迈克

【问题讨论】:

  • 做了 google了它,并找到了答案,但这些排名解决方案都不起作用。 JSON.parse 似乎不起作用,只是返回 null,并且 javascript 中的解决方案仍然将 x 作为转义传递。我认为解决方案需要在传递字符串后使用 java,而不是使用 Javascript,因为它似乎在退出时被转义。这有意义吗?
  • 好吧,解决方案是用 JavaScript 编写的,所以您需要在该页面中插入带有非转义代码的 &lt;script&gt; 标记或在您的 Java 代码中执行。

标签: javascript android html string escaping


【解决方案1】:

我遇到了同样的问题,看起来它是 java 转义的,所以因为我已经在使用 apache commons lang 这对我有用:

str = StringEscapeUtils.unescapeJava(str);

之前

"\u003Chtml lang=\"en\">\u003Chead> \u003Cmeta content=\"width=device-width,minimum-scale=1.0\"...

之后

"<html lang="en"><head> <meta content="width=device-width,minimum-scale=1.0"...

我的代码来自:

Convert escaped Unicode character back to actual character

【讨论】:

    猜你喜欢
    • 2015-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 2012-12-20
    相关资源
    最近更新 更多