You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Java正确解码URL中的特殊字符以获得预期结果?

解决URL多次编码后的完全解码问题

你的问题出在目标URL是经过两次URL编码的,同时还包含HTML转义的&字符,一次URLDecoder.decode只能解码一层,所以无法得到最终的预期结果。

解决方案:循环解码+处理HTML转义字符

因为无法提前知道URL被编码了多少次,循环解码是最通用的方式,直到字符串不再变化(说明没有可解码的编码字符),再处理HTML转义的&:

String url1 = "https://dev/ABC/v1/XYZ?itemnumber%255Bin%255D=%255B3001%252C3005%252C202%255D&limit=2&apikey=4zVYEk2Xg8zvwYxNnW&offset=2";

// 循环解码直到无变化
String decodedURL = url1;
String temp;
do {
    temp = decodedURL;
    decodedURL = URLDecoder.decode(decodedURL, "UTF-8");
} while (!decodedURL.equals(temp));

// 处理HTML转义的&字符
decodedURL = decodedURL.replace("&", "&");

System.out.println(decodedURL);

结果说明

运行后输出:

https://dev/ABC/v1/XYZ?itemnumber[in]=[3001,3005,202]&limit=2&apikey=4zVYEk2Xg8zvwYxNnW&offset=2

注:你预期输出中的20应该是输入里202的笔误,上述代码会完全还原输入中的原始数值。

内容的提问来源于stack exchange,提问作者string

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 17:50:25