首页 > 基础资料 博客日记
SpringBoot进阶教程(八十六)URL指定参数encode
2025-06-14 22:00:01基础资料围观18次
这篇文章介绍了SpringBoot进阶教程(八十六)URL指定参数encode,分享给大家做个参考,收藏Java资料网收获更多编程知识
Encode(编码)和Decode(解码)是在信息处理中常用的概念,用于表示将信息从一种形式转换为另一种形式的过程。
v直接demo
import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import java.net.URLEncoder; import java.util.ArrayList; import java.util.List; public class UrlParamEncoder { public static void main(String[] args) throws UnsupportedEncodingException { String url = "https://www.test.com/s?wd=%E7%99%BE%E5%BA%A6&rsv_spt=1&rsv_iqid=0xbe352d6c00064d34&issp=1&f=8&rsv_bp=1&rsv_idx=2&ie=utf-8&tn=baiduhome_pg&rsv_dl=tb&rsv_enter=1&rsv_sug3=17&rsv_sug1=8&rsv_sug7=100&rsv_sug2=0&rsv_btype=i&prefixsug=%25E7%2599%25BE%25E5%25BA%25A6&rsp=6&inputT=3412&rsv_sug4=5053"; String encodedUrl = encodeSpecificParam(url, "prefixsug", true); System.out.println(url); System.out.println(encodedUrl); } /** * 对指定参数进行编码 * ignore是否先解码再编码 * @param url * @param targetParam * @param ignore * @return */ public static String encodeSpecificParam(String url, String targetParam, boolean ignore) { try { // 分割基础URL和查询部分 String[] urlParts = url.split("\\?", 2); String baseUrl = urlParts[0]; String queryAndFragment = urlParts.length > 1 ? urlParts[1] : ""; // 分离查询参数和锚点 String[] queryFragment = queryAndFragment.split("#", 2); String query = queryFragment[0]; String fragment = queryFragment.length > 1 ? "#" + queryFragment[1] : ""; // 解析查询参数 List<Param> params = parseQueryString(query); // 编码目标参数 for (Param param : params) { if (param.key.equals(targetParam)) { String decoded = ignore ? param.value : URLDecoder.decode(param.value, "UTF-8"); String encoded = URLEncoder.encode(decoded, "UTF-8") .replace("+", "%20"); // 将+转换为%20 param.value = encoded; } } // 重构查询字符串 StringBuilder newQuery = new StringBuilder(); for (Param param : params) { if (newQuery.length() > 0) { newQuery.append("&"); } newQuery.append(param.key).append("=").append(param.value); } // 组合最终URL return baseUrl + (newQuery.length() > 0 ? "?" : "") + newQuery.toString() + fragment; } catch (UnsupportedEncodingException e) { throw new RuntimeException("字符编码错误", e); } } private static List<Param> parseQueryString(String query) { List<Param> params = new ArrayList<>(); if (query == null || query.isEmpty()) return params; for (String pair : query.split("&")) { int idx = pair.indexOf("="); String key = (idx > 0) ? pair.substring(0, idx) : pair; String value = (idx > 0 && pair.length() > idx + 1) ? pair.substring(idx + 1) : ""; params.add(new Param(key, value)); } return params; } static class Param { String key; String value; Param(String key, String value) { this.key = key; this.value = value; } } }
v源码地址
https://github.com/toutouge/javademosecond/tree/master/hellolearn
作 者:请叫我头头哥
出 处:http://www.cnblogs.com/toutou/
关于作者:专注于基础平台的项目开发。如有问题或建议,请多多赐教!
版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。
特此声明:所有评论和私信都会在第一时间回复。也欢迎园子的大大们指正错误,共同进步。或者直接私信我
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是作者坚持原创和持续写作的最大动力!
文章来源:https://www.cnblogs.com/toutou/p/18596841/springboot_url_param_encode
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
标签: