这似乎是一个非常容易的问题,但是我无法弄明白,也无法在其他任何地方找到解决方案.我正在连接一个%内的字符串,由于某种原因,它在%之后添加了数字25.有人知道这个简单问题的解决方案吗?
String buttonCheck = "%26" + DATABASE.getValue("buttonCheck") + "%26";
Run Code Online (Sandbox Code Playgroud)
出来吧
"%2526value%2526"
Run Code Online (Sandbox Code Playgroud)
编辑:很明显,问题实际上是在URL编码中,我将在问题中添加更多相关数据.
我正在开发一个Android应用程序,它从一个站点解析HTML,并允许用户通过Android UI与它进行交互.我在将%编码到表单的参数时遇到问题.
public class CLASS extends Activity
{
DefaultHttpClient client = new DefaultHttpClient;
String url = "http://www.url.com"
HttpRequestBase method = new HttpPost(url);
List<NameValuePair> nvps = new ArrayList<NameValuePair>();
nvps.add("buttoncheck", "%26" + DATABASE.getValue("buttonCheck") + "%26");
//DATABASE is simply a class that handles a HashMap
HttpPost methodPost = (HttpPost) method;
methodPost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));
execute(method);
}
Run Code Online (Sandbox Code Playgroud)
而不是发送表格的价值
buttoncheck=%26value%26
Run Code Online (Sandbox Code Playgroud)
我明白了
buttoncheck=%2526value%2526
Run Code Online (Sandbox Code Playgroud)
它不会出现在"%2526value%2526"中buttonCheck.我强烈怀疑你以后会看到一个值 - 例如,在URI编码之后.找出正在进行编码的内容,以及您实际想要编码的内容.
需要明确的是,25与26完全不同.如果完全摆脱26,你会看到同样的事情,
String buttonCheck = "%" + DATABASE.getValue("buttonCheck") + "%";
Run Code Online (Sandbox Code Playgroud)
那时我怀疑你会得到
%25value%25
Run Code Online (Sandbox Code Playgroud)
基本上只是将%编码为%25.例如,这样做:
import java.net.*;
public class Test {
public static void main(String[] args) throws Exception {
String input = "%value%";
String encoded = URLEncoder.encode(input, "utf-8");
System.out.println(encoded); // Prints %25value%25
}
}
Run Code Online (Sandbox Code Playgroud)