编程语言
首页 > 编程语言> > java – 为什么URL没有完全解码?

java – 为什么URL没有完全解码?

作者:互联网

我正在写一个java程序,我的url需要解码,我正在使用

URLDecoder.decode(url,"UTF-8")

实现它的方法.但遗憾的是它并没有完全解码.例如.上面的方法解码= to =,+ to但它没有解码几个字符,如:/即使在解码后仍保持不变.请告诉我,如果我遗失了什么.

解决方法:

首先,一切都按预期工作.您的问题是,输入字符串被编码两次.所以简单地解码两次.

例:

>输入:%3A
>解码为:
>解码为:

码:

String input = "40.2%2522%26url%3Dhttp%253A%252F%252Fr1";
String output1 = URLDecoder.decode(input, "UTF-8");
String output2 = URLDecoder.decode(output1, "UTF-8");
System.out.println(input);
System.out.println(output1);
System.out.println(output2);

输出:

40.2%2522%26url%3Dhttp%253A%252F%252Fr1
40.2%22&url=http%3A%2F%2Fr1
40.2"&url=http://r1

注意:
如果不确定字符串编码的次数,您可以重复解码,直到结果保持不变.

String input = "40.2%2522%26url%3Dhttp%253A%252F%252Fr1";
String output = input;

do {
    input = output;
    output = URLDecoder.decode(input, "UTF-8");

} while (!input.equals(output));

标签:urldecode,java
来源: https://codeday.me/bug/20190728/1562132.html