Hutool Hutool
(opens new window)
🏡首页
📖指南
🎢最佳实践
💖支持
💡javaDoc (opens new window)
⏳更新记录 (opens new window)
  • 🍎gitee (opens new window)
  • 🍏github (opens new window)
(opens new window)
🏡首页
📖指南
🎢最佳实践
💖支持
💡javaDoc (opens new window)
⏳更新记录 (opens new window)
  • 🍎gitee (opens new window)
  • 🍏github (opens new window)
  • 快速入门

  • 核心(hutool-core)

    • AI(Hutool-ai)

    • 注解(annotation)

    • 数组(array)

    • JavaBean(bean)

    • 缓存(cache)

    • 类加载器(classloader)

    • 编码解码(codec)

    • 集合(collection)

    • 比较器(comparator)

    • 压缩(compress)

    • 类型转换(convert)

    • 数据(data)

    • 日期时间(date)

    • 异常(exception)

    • 函数(func)

    • IO流(io)

    • 语言特性(lang)

    • Map(map)

    • 数字数学(math)

    • 网络(net)

      • 网络
      • NetUtil
      • Ipv4Util
      • Ipv6Util
      • MacAddressUtil
      • KeyManagerUtil
      • SSL上下文工具-SSLContextUtil
      • 信任管理器工具-TrustManagerUtil
      • URL构建器-UrlBuilder
      • URL协议工具-UrlProtocolUtil
      • URL查询工具-UrlQueryUtil
        • 主要功能
        • 主要方法
          • toQuery(paramMap)
          • toQuery(paramMap, charset)
          • toQuery(paramMap, charset, encodeMode)
          • encodeQuery(urlWithParams, charset)
          • normalizeQuery(queryPart, charset)
          • decodeQuery(paramsStr, charset)
          • decodeQueryList(paramsStr, charset)
        • 示例代码
          • 将Map转换为URL查询字符串
          • 编码URL查询字符串
          • 标准化查询字符串
          • 解析URL查询字符串为Map
          • 解析URL查询字符串为带List的Map(支持重复键)
          • 处理特殊字符
      • URL工具-UrlUtil
    • 对象池(pool)

    • 反射(reflect)

    • 正则(regex)

    • 服务提供(spi)

    • 聚合操作(stream)

    • 字符串文本(text)

    • 并发和线程(thread)

    • 树结构(tree)

    • 工具集合(util)

    • XML操作(xml)

  • 定时任务(hutool-cron)

  • 加密(hutool-crypto)

  • 数据库(hutool-db)

  • 扩展(hutool-extra)

  • HTTP(hutool-http)

  • 日志(hutool-log)

  • 配置文件(hutool-setting)

  • JSON(hutool-json)

  • Office办公(hutool-poi)

  • 套接字(hutool-socket)

  • GUI(hutool-swing)

  • 指南
  • 核心(hutool-core)
  • 网络(net)
Hutool
2026-01-23
目录

URL查询工具-UrlQueryUtil

UrlQueryUtil是Hutool中用于处理URL查询字符串的工具类,提供了将Map转换为URL参数、编码查询字符串、标准化查询字符串以及解析查询字符串为Map等功能。

# 主要功能

  • 将Map形式的表单数据转换为URL参数形式
  • 编码URL查询字符串
  • 标准化查询字符串
  • 解析URL查询字符串为Map
  • 解析URL查询字符串为List形式的Map(支持重复键)

# 主要方法

# toQuery(paramMap)

将Map形式的表单数据转换为Url参数形式,自动使用UTF-8编码键和值。

# toQuery(paramMap, charset)

将Map形式的表单数据转换为Url参数形式,可指定编码。

  • paramMap中如果key为空(null和"")会被忽略,如果value为null,会被做为空白符("")
  • 会自动url编码键和值
  • 此方法用于拼接URL中的Query部分,并不适用于POST请求中的表单

# toQuery(paramMap, charset, encodeMode)

将Map形式的表单数据转换为Url参数形式,可指定编码和编码模式。

# encodeQuery(urlWithParams, charset)

对URL参数做编码,只编码键和值。

  • 提供的值可以是url附带参数,但是不能只是url
  • 注意,此方法只能标准化整个URL,并不适合于单独编码参数值

# normalizeQuery(queryPart, charset)

标准化参数字符串,即URL中?后的部分。

  • 注意,此方法只能标准化整个URL,并不适合于单独编码参数值

# decodeQuery(paramsStr, charset)

将URL参数解析为Map(也可以解析Post中的键值对参数)。

# decodeQueryList(paramsStr, charset)

将URL参数解析为Map,支持重复键,每个键对应一个值列表。

# 示例代码

# 将Map转换为URL查询字符串

// 创建参数Map
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("key1", "value1");
paramMap.put("key2", null); // 会被转换为空字符串
paramMap.put("key3", "value3");

// 转换为URL查询字符串,默认UTF-8编码
String query = UrlQueryUtil.toQuery(paramMap);
// 输出:key1=value1&key2=&key3=value3

// 指定编码
String queryGBK = UrlQueryUtil.toQuery(paramMap, CharsetUtil.GBK);

# 编码URL查询字符串

// 编码带参数的URL
String url = "http://www.example.com/search?keyword=测试&page=1";
String encodedUrl = UrlQueryUtil.encodeQuery(url, CharsetUtil.UTF_8);
// 输出:http://www.example.com/search?keyword=%E6%B5%8B%E8%AF%95&page=1

// 仅编码查询字符串部分
String params = "keyword=测试&page=1";
String encodedParams = UrlQueryUtil.encodeQuery(params, CharsetUtil.UTF_8);
// 输出:keyword=%E6%B5%8B%E8%AF%95&page=1

# 标准化查询字符串

String params = "key1=value1&key2=&key3=value3";
String normalized = UrlQueryUtil.normalizeQuery(params, CharsetUtil.UTF_8);
// 输出:key1=value1&key2=&key3=value3

// 处理不规范的查询字符串
String messyParams = " key1 = value 1 & key2= & &key3=value3&";
String normalizedMessy = UrlQueryUtil.normalizeQuery(messyParams, CharsetUtil.UTF_8);
// 输出:key1=value+1&key2=&key3=value3

# 解析URL查询字符串为Map

// 解析查询字符串
String params = "key1=value1&key2=&key3=value3";
Map<String, String> paramMap = UrlQueryUtil.decodeQuery(params, CharsetUtil.UTF_8);
// 输出:{key1=value1, key2=, key3=value3}

// 解析带URL的查询字符串
String url = "http://www.example.com/search?keyword=测试&page=1";
Map<String, String> urlParamMap = UrlQueryUtil.decodeQuery(url, CharsetUtil.UTF_8);
// 输出:{keyword=测试, page=1}

# 解析URL查询字符串为带List的Map(支持重复键)

// 解析包含重复键的查询字符串
String params = "key1=value1&key1=value2&key2=value3";
Map<String, List<String>> paramMap = UrlQueryUtil.decodeQueryList(params, CharsetUtil.UTF_8);
// 输出:{key1=[value1, value2], key2=[value3]}

// 获取重复键的值列表
List<String> key1Values = paramMap.get("key1");
// 输出:[value1, value2]

# 处理特殊字符

// 处理包含特殊字符的参数
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("keyword", "特殊字符:!@#$%^&*()_+");
paramMap.put("url", "http://www.example.com");

String query = UrlQueryUtil.toQuery(paramMap);
// 输出:keyword=%E7%89%B9%E6%AE%8A%E5%AD%97%E7%AC%A6%EF%BC%9A%21%40%23%24%25%5E%26%2A%28%29_%2B&url=http%3A%2F%2Fwww.example.com

// 解析包含特殊字符的查询字符串
Map<String, String> decodedMap = UrlQueryUtil.decodeQuery(query, CharsetUtil.UTF_8);
// 输出:{keyword=特殊字符:!@#$%^&*()_+, url=http://www.example.com}
URL协议工具-UrlProtocolUtil
URL工具-UrlUtil

← URL协议工具-UrlProtocolUtil URL工具-UrlUtil→

Theme by Vdoing | Copyright © 2025-2026 Hutool | Apache-2.0
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式