URL 编码解码工具 - 在线 Encode、Decode、解析参数与 Punycode

在线处理 URL Encode、Decode、Percent Encoding、URL 解析构建、Query String 和 Punycode,适合接口调试、链接排查和参数整理。

功能特点

  • 支持 URL 编码和解码,处理中文、特殊字符和查询参数
  • 解析 URL 的协议、域名、路径、参数和 hash 片段
  • 构建 Query String,整理接口请求参数
  • 区分完整 URL、Query、Path、Fragment 和参数值,避免重复编码分隔符
  • 支持 Punycode 和国际化域名相关处理

使用方法

  1. 粘贴需要处理的完整 URL、参数片段或待编码文本
  2. 先确认数据位于完整 URL、Query、Path、Fragment 还是单个参数值,再选择编码、解码、解析、构建或 Punycode
  3. 检查是否发生重复编码,并用实际请求或目标框架复核输出结果后再复制使用

示例输入

  • Query 参数编码

    keyword=中文搜索&redirect=/orders?id=42

    适合区分参数分隔符、中文和嵌套 URL,避免把整个 URL 当成一个参数编码。

  • Path 中的特殊字符

    /files/report 2026#.pdf

    适合排查空格、#、? 等字符在路径中的含义和编码边界。

  • 重复编码排查

    %252Fapi%252Fusers%253Fid%253D42

    适合识别已经编码过一次的参数,避免服务端解码次数不一致。

  • encodeURI 与 encodeURIComponent

    完整 URL:https://example.com/search?q=中文&next=/orders?id=42
    参数值:中文&订单

    完整 URL 保留结构时使用 encodeURI;单个参数值使用 encodeURIComponent,不能把两者输出互相替换。

示例输出

  • Query 参数编码

    keyword%3D%E4%B8%AD%E6%96%87%E6%90%9C%E7%B4%A2%26redirect%3D%2Forders%3Fid%3D42(整段作为 URL Component 编码)
  • Path 中的特殊字符

    %2Ffiles%2Freport%202026%23.pdf
  • 重复编码排查

    %2Fapi%2Fusers%3Fid%3D42(解码一层;再解码才得到 /api/users?id=42)
  • encodeURI 与 encodeURIComponent

    encodeURI 保留 https://example.com/search?q=中文&next=/orders?id=42 的结构;encodeURIComponent 将单个参数 中文&订单 编码为 %E4%B8%AD%E6%96%87%26%E8%AE%A2%E5%8D%95

常见错误

  • Query 参数、Path、Fragment、Form 表单和 HTML 属性使用的编码边界不同,不能无脑整串编码。
  • + 在表单编码中常表示空格,但在普通 URL Percent Encoding 中不一定等于空格。
  • 重复编码或重复解码会把 %2F、%3F 等内容变成不同的路径和查询结构。
  • encodeURI 适合保留 URL 结构,encodeURIComponent 适合编码单个参数值,混用会把 ?、&、/ 等分隔符处理错。
  • Punycode 只处理国际化域名,不等于 URL 路径或参数编码。

适用场景

  • 接口 Query 参数排查
  • 重定向 URL 构建
  • 中文和特殊字符链接处理
  • 重复编码问题定位

实操检查

  • 验证组件编码与解码

    固定输入:`hello 世界 & a=b`。步骤:在 URL 编码模式输入文本并点击“URL Component 编码”,再把输出原样放回输入并点击“URL Component 解码”。预期结果:编码为 `hello%20%E4%B8%96%E7%95%8C%20%26%20a%3Db`,解码回原文本。失败判断:编码未转义 & 或 =,或往返结果不等于原文本。

  • 验证非法百分号输入

    固定输入:`%E4%A`。步骤:在 URL 编码模式点击“URL Component 解码”。预期结果:结果区出现 `Invalid URL encoded input` 错误,输出被清空。失败判断:页面把不完整序列静默当作正常文本,或保留旧输出。

页面专属核验

使用前与操作中

  • 先区分 URL 结构和组件编码:URL Component 模式会对整段文本调用 encodeURIComponent,不能把完整 `https://...?...` 当作一个组件直接编码。
  • 处理 Query 时分别确认参数名、参数值、空值、重复键、`+` 与 `%20`;页面的参数解析会解码 `+` 为空格,而 URL 构建通过 URLSearchParams 生成 `+`。
  • 解析/构建 URL 时单独检查 protocol、host、pathname、query、hash;Punycode 只处理国际化域名的 ASCII/Unicode 表示,不等于路径或参数编码。

结果出来后

  • 对 `hello 世界 & a=b` 做 URL Component 编码后,是否得到包含 `%20`、中文 UTF-8 百分号序列、`%26` 和 `%3D` 的结果,并能原样解码回来?
  • 解析 `?name=Tom&city=%E4%B8%8A%E6%B5%B7&empty=` 时,是否得到三个参数行、中文值和空字符串值,而不是把 `&` 编成一个字段?
  • 用 protocol=`https`、host=`example.com`、path=`/search`、query=`q=hello world`、hash=`top` 构建时,是否得到 `https://example.com/search?q=hello+world#top`,并按 URL 结构分别核对各段?

相关工具

  • HTTP Request / cURL Builder:从方法、URL、Headers 和 Body 生成 cURL,并用 AI 分析 API 请求和代码转换
  • JSON 工具:统一处理 JSON 格式化、校验、树形查看、Schema、CSV 转换、AI 响应分析和 JSON 修复
  • HTTP Headers 解析:解析 HTTP Headers,并用 AI 分析认证方式、风险和 API 调试线索
  • 文本编码转换:统一转换 Base64、Hex、Binary、Unicode Escape、UTF-8 Hex、ASCII、HTML Entity 和 Morse

工具边界

  • 工具只能转换和解析 URL 文本,不能判断目标服务器路由、签名规则或业务参数是否有效。
  • 不同框架对 +、空格、重复参数和 Unicode 的处理可能不同。
  • 编码不会提供加密或隐私保护,敏感信息仍可能出现在日志和历史记录中。

与相似工具的区别

  • Slug 生成器:URL 编码保留任意参数或路径字符的字节含义;Slug 会改写标题为可读路径,通常不可逆。

安全与兼容性

  • 编码与解码完全在浏览器执行,但编码不会隐藏 Token、邮箱或查询参数,它们仍会进入日志和浏览器历史。
  • 路径段和查询参数要分别编码;对完整 URL 重复调用编码函数可能破坏斜杠、问号及已有百分号序列。

下一步排查

  1. 先确定数据位于 Query、Path、Fragment、Form 还是 HTML 属性上下文。
  2. 用 cURL 和 Headers 工具对比实际发送的 URL、Content-Type 和服务端请求头。
  3. 出现 400 或 404 时,再结合 HTTP 状态码和服务端路由日志定位。

常见问题

应该编码整个 URL 还是只编码参数值?

通常只编码参数值或路径中的动态片段,协议、主机、分隔符和已有结构不应整体再次编码。

为什么浏览器地址栏和后端收到的参数不同?

浏览器、代理、框架和服务端可能分别进行一次解码,需对比原始请求、规范化 URL 和应用最终参数。

为什么解码一次后仍然看到 %2F?

这通常表示内容被编码了多次,或 %2F 本来就是参数值中的字面文本;先确认每一层由哪个系统编码,再只解码与当前上下文匹配的次数。