Android 简单URL解码器问题

Android 简单URL解码器问题,android,webview,urldecode,Android,Webview,Urldecode,我无法解码简单的url。这是我的问题中的一个例子: String sb = "<body>" + "<script>" + "document.body.innerHTML += '<a href=\"http://www.azerty.com/?s=4&a=50 %\" style=\"display: none;\" id=\"link\">Link</a>';" +"document.getElementById(\"link\").

我无法解码简单的url。这是我的问题中的一个例子:

String sb = "<body>" + "<script>" + "document.body.innerHTML += '<a href=\"http://www.azerty.com/?s=4&a=50 %\" style=\"display: none;\" id=\"link\">Link</a>';" +"document.getElementById(\"link\").click();" +"</script>" +"<body>";

mContentWebView.getSettings().setJavaScriptEnabled(true);
mContentWebView.getSettings().setDomStorageEnabled(true);
mContentWebView.loadDataWithBaseURL(URI,sb, "text/html; charset=utf-8", "UTF-8", null);
String sb=“”+”+“document.body.innerHTML+=”;“+”document.getElementById(\“link\”)。单击();“+”+”;
mContentWebView.getSettings().setJavaScriptEnabled(true);
mContentWebView.getSettings().setDomStorageEnabled(true);
loadDataWithBaseURL(URI,sb,“text/html;charset=utf-8”,“utf-8”,null);
当shouldOverrideUrlLoading调用它时,给我一个提示,当我尝试使用URLDecode.decode(response_value,“UTF-8”)“读取”的值时,我的应用程序崩溃,并出现以下错误:java.lang.IllegalArgumentException:无效%sequence at 5:50%20%

我不明白为什么我的webview没有将%编码为%25。 sb是来自我的服务器的动态字符串

有谁能给我一个提示,告诉我如何解决这个问题,并能读懂“a”和“b”


Thx.

您介意删除水平滚动条吗?这将提高可读性。请关注以“a=50”结尾的表达式”他说。它不是有效URI的结尾。如果你从一个有效的对象开始,然后它被编码,编码的输出将是有效的。如果你仍然有问题,你可能会尝试只编码URII查询部分中KV对的值。我不太理解第一部分,你能举个例子吗。但是我已经用decodeValue(url,“a”)尝试了第二部分;私有字符串decodeValue(字符串变量,字符串neededKey){Uri url=Uri.parse(var);Set paramNames=url.getQueryParameterNames();for(字符串键:paramNames){if(neededKey.equals(key))返回url.getQueryParameter(key);}返回“”;}但它给出了50�在“a=50”之后,接下来的2个字节。。。空格%是您需要查看的。。不是URI查询部分KV部分的有效结尾。我使用了基于java类URLDecoder doc的变通方法“形式为“%xy”的序列将被视为表示一个字节,其中xy是8位的两位十六进制表示形式。然后,包含一个或多个字节序列的所有子字符串…”从if类URLDecoder抛出一个IllegalArgumentException,当%的下一个2char不是十六进制值时,我将每个%替换为%25。这种方法解决了我的问题@Robert Rowntree thx for ur time:)您介意删除水平滚动条吗?这将提高可读性。请关注以“a=50”结尾的表达式。它不是有效URI的结尾。如果你从一个有效的对象开始,然后它被编码,编码的输出将是有效的。如果你仍然有问题,你可能会尝试只编码URII查询部分中KV对的值。我不太理解第一部分,你能举个例子吗。但是我已经用decodeValue(url,“a”)尝试了第二部分;私有字符串decodeValue(字符串变量,字符串neededKey){Uri url=Uri.parse(var);Set paramNames=url.getQueryParameterNames();for(字符串键:paramNames){if(neededKey.equals(key))返回url.getQueryParameter(key);}返回“”;}但它给出了50�在“a=50”之后,接下来的2个字节。。。空格%是您需要查看的。。不是URI查询部分KV部分的有效结尾。我使用了基于java类URLDecoder doc的变通方法“形式为“%xy”的序列将被视为表示一个字节,其中xy是8位的两位十六进制表示形式。然后,包含一个或多个字节序列的所有子字符串…”从if类URLDecoder抛出一个IllegalArgumentException,当%的下一个2char不是十六进制值时,我将每个%替换为%25。这种方法解决了我的问题@Robert Rowntree thx for ur time:)