URL 编码解码工具 - 在线 Encode、Decode、解析参数与 Punycode
在线处理 URL Encode、Decode、Percent Encoding、URL 解析构建、Query String 和 Punycode,适合接口调试、链接排查和参数整理。
功能特点
- 支持 URL 编码和解码,处理中文、特殊字符和查询参数
- 解析 URL 的协议、域名、路径、参数和 hash 片段
- 构建 Query String,整理接口请求参数
- 区分完整 URL、Query、Path、Fragment 和参数值,避免重复编码分隔符
- 支持 Punycode 和国际化域名相关处理
使用方法
- 粘贴需要处理的完整 URL、参数片段或待编码文本
- 先确认数据位于完整 URL、Query、Path、Fragment 还是单个参数值,再选择编码、解码、解析、构建或 Punycode
- 检查是否发生重复编码,并用实际请求或目标框架复核输出结果后再复制使用
示例输入
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 重复调用编码函数可能破坏斜杠、问号及已有百分号序列。
下一步排查
- 先确定数据位于 Query、Path、Fragment、Form 还是 HTML 属性上下文。
- 用 cURL 和 Headers 工具对比实际发送的 URL、Content-Type 和服务端请求头。
- 出现 400 或 404 时,再结合 HTTP 状态码和服务端路由日志定位。
常见问题
应该编码整个 URL 还是只编码参数值?
通常只编码参数值或路径中的动态片段,协议、主机、分隔符和已有结构不应整体再次编码。
为什么浏览器地址栏和后端收到的参数不同?
浏览器、代理、框架和服务端可能分别进行一次解码,需对比原始请求、规范化 URL 和应用最终参数。
为什么解码一次后仍然看到 %2F?
这通常表示内容被编码了多次,或 %2F 本来就是参数值中的字面文本;先确认每一层由哪个系统编码,再只解码与当前上下文匹配的次数。