如何对 Android 上的 Javascript 返回的字符串进行转义?
How do I Unescape a String returned from Javascript on Android?
我正在尝试从 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 版本 returns 正是我想要的。然而,KitKat 版本 returns 代码的转义版本,如下所示:
"\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 上取消转义该字符串?
迈克
我遇到了同样的问题,它看起来像是 java-escaped 所以因为我已经在使用 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
我正在尝试从 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 版本 returns 正是我想要的。然而,KitKat 版本 returns 代码的转义版本,如下所示:
"\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 上取消转义该字符串?
迈克
我遇到了同样的问题,它看起来像是 java-escaped 所以因为我已经在使用 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