URL 编码解码
粘贴单个参数值、完整 URL,或类似 a=1&b=hello world 的查询字符串,工具会根据上下文选择合适的百分号编码方式。普通文本会被当作一个参数值处理;完整 URL 会保留协议、路径、查询参数和片段结构;Query 模式则会逐个处理参数。表单模式支持较老的加号表示空格约定;严格解码适合 API 校验;宽容解码适合查看已经损坏的日志。所有处理都在浏览器内完成,回调 URL、OAuth state、JWT 参数和私有数据不会被上传。
- 分别处理参数值、完整 URL 和 Query 参数,避免误把结构字符当作普通内容编码
- Query 模式可选择同时处理 key 和 value,或只处理 value,以匹配不同后端约定
- 表单模式支持 application/x-www-form-urlencoded 中 + 表示空格的规则
- 严格解码会立即报告错误的百分号编码;宽容解码会尽量恢复可读文本
- 内置完整 URL、表单风格 Query、中文文本和 Emoji 示例,方便粘贴真实数据前先试模式
- 完全本地处理,回调 URL、签名参数、Webhook 内容和私有字段都只留在浏览器中
文本或参数值模式会把整个输入当作一个值处理,因此问号、& 和等号都会被作为内容编码。
功能简介
URL 编码问题通常不是字符本身造成的,而是把错误的规则用在了错误的上下文里。这个页面会先区分参数值、完整 URL 和 Query 字符串,再使用对应的处理方式。
- 01
三种处理目标
文本或参数值模式会把整个输入当作一个值来编码。完整 URL 模式会保留协议、主机、路径、查询和片段结构。Query 模式会逐个处理参数。选对目标,是结果稳定的关键。
- 02
Query 模式可只处理 value
在 Query 模式下,可以同时处理 key 和 value,也可以保持 key 不变、只处理 value。适合服务端要求 key 名保持原样,但 value 必须 URL 安全的情况。
- 03
完整 URL 保留结构
当你粘贴的是已经拼好的 URL 时,工具只会处理需要编码的部分。协议、主机、路径分隔符、Query 分隔符和 fragment 都会保持完整。
- 04
表单空格模式
可以在标准百分号编码和表单提交约定之间切换。标准编码会用百分号形式表示空格,而表单数据会用加号表示空格。这个开关会在完整 URL 模式下隐藏,避免破坏 URL 结构。
- 05
严格解码与宽容解码
严格解码遇到孤立的百分号或不完整字节会失败,适合协议校验。宽容解码会先修复常见损坏片段,再尽量返回可读文本,适合排查日志。
- 06
往返校验
编码后可以把结果放回输入区,再执行反向解码。这样能快速确认内容在当前模式下是否可以完整还原。
- 07
内联校验状态
转换成功时,输出区标题会显示成功状态;输入格式无效时会显示错误状态,帮助你区分是数据损坏还是工具行为。
- 08
完全本地处理
编码、解码、复制和往返校验都在当前浏览器标签页内完成。回调 URL、OAuth state、签名链接、JWT 参数、客户搜索词和私有字段都不会离开设备。
如何使用
五个短步骤。任何控制项变化都会立即重新计算输出。
- 01
在转换模式中选择编码或解码。
- 02
选择处理目标:单个文本值、已经拼好的完整 URL,或一组 Query 参数。
- 03
如果处理 Query 参数,选择同时处理 key 和 value,还是只处理 value。解码时还可以选择严格模式或宽容模式。
- 04
如果数据来自 HTML 表单提交,或来自 + 表示空格的旧系统,请打开表单模式。完整 URL 模式会自动隐藏这个选项。
- 05
当输出状态显示已编码或已解码后,复制结果。需要验证时,可以将输出作为输入,再执行相反转换。
功能说明
同一个字符,在某些位置是普通内容,在另一些位置却是分隔符或结构标记。处理目标会告诉编码器应该如何理解它。
- 单个参数值、搜索关键词、筛选条件或 slug,请使用文本或参数值。问号、& 和等号会作为内容被编码,避免意外拆分 URL。
- 输入已经是拼好的完整 URL,只需要处理里面的空格或 Unicode 时,请使用完整 URL。协议、主机、路径分隔符、Query 分隔符和 fragment 标记都会保持有效。
- 手里是原始 Query 片段时,请使用 Query 参数。每个参数会被单独处理,并且可以选择 key 是否保持不变。
- 只有在 HTML 表单提交、旧回调系统,或明确约定+ 表示空格的系统中,才打开表单模式。普通 URL 参数通常不需要。
- 查看被截断、复制损坏、部分编码的日志时,使用宽容解码。它会优先给出可读文本,方便你判断下一步怎么处理。
- 做协议校验、API 契约测试,或任何无效内容必须立即失败的流程时,使用严格解码。
适合哪些场景
这些都是反复出现的工程任务。同样是选择模式、粘贴内容、复制结果,就能覆盖它们。
-
OAuth 回调 URL 和 state
把带有嵌套参数的完整回调 URL 编码后放进授权链接,或从回调里解码 state 值,查看客户端实际发送了什么。
-
搜索和筛选 Query 参数
把用户输入的搜索词、多选筛选条件、分页 cursor、多语言标签编码后,再加入 query string。
-
API 请求 URL 拼装
分别编码路径片段(slug、ID、日期)和参数值,拼出 REST URL,避免内容在到达服务端前被破坏。
-
Webhook 签名排查
解码从日志里抓到的 signature、state 或 nonce 参数,还原合作方实际发送的内容。
-
UTM 和追踪链接清理
解码由广告跳转、短链接和落地页组成的多层追踪链接,逐层查看 UTM 字段,方便归因、归档或排障。
-
表单提交排查
从浏览器开发者工具、API 网关日志或后端访问日志中复制表单内容,解码后查看用户实际提交了什么。
-
中文、日文、韩文和 Emoji 参数处理
一致地编码中文、英文、日文、韩文和 Emoji 参数,减少浏览器、代理和框架之间的差异。
-
双重编码救援
当日志里的文本看起来被编码了不止一次时,可以一层一层解码,直到原始值出现。
-
分享预填 URL
构建预填邮件链接、Google Forms、Slack deep link 或营销分享链接时,先编码消息和参数,再拼入 URL。
-
JWT 和 SAML 回调检查
先解码 JWT 或 SAML 回调里的 URL 参数,再把结果交给对应的检查工具做更深入分析。
延伸阅读
当 URL 携带的值又被 Base64 包了一层,例如凭据、不透明 token 或内联图片时,可以先用 Base64 编码解码 做一次往返确认。值如果最终要显示在页面文本、HTML 属性或邮件源码里,再用 HTML 编码解码 检查实体边界。对于嵌在回调 URL 里的 Bearer token 和三段式 JWT,请打开 JWT 检查器 查看 header、claims 和 signature。当任务从一个参数扩展到包含 host、path、Query 和 fragment 的完整 URL 时,可以搭配 URL 工具 使用。
使用建议
大多数 URL 问题来自上下文判断错误,而不是编码规则本身。下面这些习惯可以让结果更可预测。
- 修改前先判断输入是什么:一个值、完整 URL,还是原始 Query 字符串。这个判断决定使用哪套规则。
- 单个值用文本或参数值模式;已经拼好的 URL 用完整 URL 模式。不要混用这两个上下文。
- 如果输入已经包含百分号编码,先解码查看原始值,再重新编码。否则很容易产生双重编码。
- 只有双方明确遵循表单提交规则时才使用表单模式。普通 URL 参数和大多数 API 通常用标准百分号编码表示空格。
- 面对真实世界的脏日志,比如截断行、半个字节、复制粘贴破坏,先用宽容解码。值看起来可读后,再切到严格模式重新解码干净版本进行确认。
- 团队需要明确记录空格、Unicode、数组参数、回调 URL 的约定。前端、移动端和后端在这些细节上漂移,是生产 URL 问题的常见来源。
- URL 编码只是传输格式,不是安全机制。XSS 防护、token 保护和签名校验都需要各自的安全处理。
- 上线前做一次往返检查:先编码,把输出作为输入,再解码,确认能回到原始值。
边界与注意事项
清楚边界可以避免误用,也能帮助你判断什么时候该换另一个工具。
- 这是编码工具,不是加密工具。百分号编码不会隐藏内容,也不会对哈希值或其他数据提供安全保证。
- 宽容解码是启发式恢复。它能修复常见的孤立百分号,但无法恢复所有损坏的 UTF-8 序列。
- 工具不会自动判断文本是否被双重编码。应该解码一次还是多次,仍然取决于业务流程。
- Query 模式假设使用标准的 & 和 = 分隔符。如果你的框架使用分号、嵌套参数或自定义分隔符,请先手动确认规则。
- 表单模式只处理+ 与空格的差异。它不会完整模拟表单序列化、文件、数组或嵌套对象。
- 这个页面处理字符串,不处理文件。如果要把文件内容转成百分号编码后上传,请使用专门工具。
- 底层行为使用浏览器原生 URL 编码和解码能力。某些旧系统使用不同的保留字符集合,结果可能与这些系统存在差异。
常见问题
这里整理了关于处理模式、表单风格空格、双重编码、隐私,以及 URL 编码和其他转义机制差异的实用回答。
什么是百分号编码?
百分号编码会把不能直接出现在 URL 中的字节转换成百分号加两个十六进制数字。它是一种格式约定,让 URL 可以携带空格、Unicode 和保留字符,同时仍然能被解析。
参数值编码和完整 URL 编码有什么区别?
参数值编码会把问号、&、等号、斜杠、井号都当作内容处理。完整 URL 编码会保留这些结构字符,让结果仍然是可解析的 URL。这个工具通过处理目标把两种情况分开。
什么时候 + 表示空格?
只有在 HTML 表单提交,以及遵循这种旧约定的 Query 字符串中,+ 才表示空格。遇到这些情况请打开表单模式。在其他 URL 上下文里,+ 只是普通加号。
为什么 URL 看起来被双重编码了?
常见原因是本来已经编码过的字符串又被编码了一次。请按照业务流程一层一层解码,直到原始值可见。
什么时候用严格解码,什么时候用宽容解码?
协议校验和 API 契约测试中,无效输入应立即失败,请使用严格模式。日志检查和事故分析中,你通常先需要从部分损坏的内容里看到可读文本,请使用宽容模式。
URL 编码能防止 XSS 吗?
不能。URL 编码只是让字符串适合放进 URL。XSS 防护需要针对最终渲染位置做输出编码,例如 HTML、JavaScript 或属性上下文。
为什么完整 URL 模式下隐藏表单开关?
因为加号在 URL 路径、Query 和 fragment 中都是合法字符。把完整 URL 里的空格都改成加号,可能会破坏 Query 之外的部分。这个开关只在参数值和 Query 上下文中有意义。
Query 模式如何处理带问号的 URL?
如果输入可以识别为完整 URL,Query 模式只会处理其中的 query 部分,然后重建 URL。协议、主机、路径和 fragment 会保持不变。
我的数据会离开浏览器吗?
不会。编码、解码、校验、复制和往返检查都在当前浏览器标签页中运行。回调 URL、OAuth state、JWT URL 和其他私有内容不会被上传。
可以粘贴多长的 URL?
几千个字符通常很轻松;几万个字符也能处理,但会慢一些。对于多 MB 的 Data URL 或大段编码内容,更适合使用流式或文件感知工具。
页面支持 IDN 域名吗?
浏览器运行时支持时,原生 URL 解析器会处理 IDN 域名。如果需要专门做 Punycode 和 Unicode 主机名转换,请使用专用 IDN 工具。这个页面主要关注路径、Query 和参数值编码。
为什么 URL 在浏览器地址栏能用,但在 curl 或 Postman 里失败?
浏览器地址栏通常会容忍原始空格和 Unicode,然后自动帮你编码。curl 和 Postman 更接近按你给出的字节发送。从代码或 API 工具发 URL 前,请显式编码。
更多相关工具
可以继续在编码分类里处理相邻任务:用 Base64 检查认证头和 token,查看回调 URL 里的 JWT,或在二维码和条形码工具之间切换。