gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:26:17 24 4
gpt4 key购买 nike

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

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

实现它的方法。但是,不幸的是它没有完全解码。例如。上面的方法将 %3d 解码为 = ,将 %2B 解码为 + 但它没有解码像 %3A%2F 即使在解码后也保持不变。如果我遗漏了什么,请告诉我。

最佳答案

首先,一切都按预期进行。您的问题是,输入字符串被编码了两次。所以简单地解码它两次。

示例:

  1. 输入:%253A
  2. 解码为:%3A
  3. 解码为::

代码:

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));

关于java - 为什么 URL 没有完全解码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24384837/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com