2017-06-29 81 views
0

如何在Java中,这串与URL编码的Java URL编码参数

http://demo.pl/sample?id=tests%trg=https%3A%2F%2Fwww.google.com%sample.html%3Fwmc%3DAFF48+_LS.%23%7NUMBER_ID%7D_%23%7NUMBER_ID%7D.. 

java.net.URLEncoder中编码此String这样的编码:

http%3A%2F%2Fdemo.pl%2Fsample%3Fid%3Dtests%25trg%3Dhttps%253A%252F%252Fwww.google.com%25sample.html%253Fwmc%253DAFF48%2B_LS.%2523%257NUMBER_ID%257D_%2523%257NUMBER_ID%257D.. 

我期待这样的结果:

http%3A%2F%2Fdemo.pl%2Fsample%3Fid%3Dtests%25trg%3Dhttps%3A%2F%2Fwww.google.com%sample.html%3Fwmc%3DAFF48+_LS.%23%7NUMBER_ID%7D_%23%7NUMBER_ID%7D.. 
+0

所以你只想要一部分字符串编码,实际上? –

+0

我不想编码String的编码部分。需要一个通用算法。字符串并不总是以片段形式编码 – Wait

回答

2

我觉得下面的代码可以帮到你:

String s = "http://demo.pl/sample?id=tests%trg=https%3A%2F%2Fwww.google.com%sample.html%3Fwmc%3DAFF48+_LS.%23%7NUMBER_ID%7D_%23%7NUMBER_ID%7D"; 
int i = s.indexOf("%"); 
String result1 = URLEncoder.encode(s.substring(0, i)) + "%25" + s.substring(i + 1); 
System.out.println(result1); // print http%3A%2F%2Fdemo.pl%2Fsample%3Fid%3Dtests%25trg=https%3A%2F%2Fwww.google.com%sample.html%3Fwmc%3DAFF48+_LS.%23%7NUMBER_ID%7D_%23%7NUMBER_ID%7D 

我不想编码字符串的编码部分。需要通用的 算法。字符串并不总是编码零星

我认为通用算法,在这种情况下是不可能的,你可以再做一次发现编码部分手动和未编码(见上面的代码)。