URL编码 / 解码
为 URL 做百分号编码,或把满是 %20 的链接还原成可读文本。
这款 URL 编码解码工具在你输入的同时完成百分号编码的双向转换。把参数值编码后再放进查询字符串,或者粘贴一条布满 %20、%3A、%2F 的链接,看看它到底包含什么。两个方向都是实时更新。
一切都在浏览器本地进行,所以带有会话 ID、签名参数、跟踪令牌的 URL 也能放心粘贴:什么都不会被发送出去。调试重定向链、OAuth 回调和 Webhook 地址时,把它当草稿板用正合适。
百分号编码的存在,是因为 URL 只允许有限的字符集。空格、&、问号以及中文等非 ASCII 字符都必须转义成 % 加十六进制数字,否则会改变 URL 的含义。给参数值编码能保住它的完整性;忘了编码,查询字符串就是这样坏掉的。
如何进行URL编码或解码
- 把文本或 URL 粘贴到输入框。
- 选择“编码”转义特殊字符,或选择“解码”把 %XX 序列还原回来。
- 在输出框查看实时结果。
- 编码查询参数时,只编码参数值本身,别编码整条 URL,这样 & 和 = 分隔符才能保留。
- 一键复制输出。
只编码参数值,别编码整条URL
最常见的错误就是把完整 URL 整个丢进编码器。这样会把 :// 和每个 & 分隔符都转义掉,得到一条打不开的链接。只编码携带数据的部分,比如单个查询参数的值或某个路径段,再把 URL 拼起来。
还有一点值得知道:空格可能显示为 %20,在老式查询字符串里也可能是 +。如果解码结果里本该是空格的地方出现了加号,那是历史遗留的表单编码方式,不是 bug。
百分号编码到底是做什么用的
URL 只允许包含有限的一组字符:字母、数字,以及少数几个标点符号。除此之外的一切——包括空格、大多数符号,以及任何非 ASCII 字符——都必须间接表示。百分号编码就是这套机制:每个不被允许的字节都写成一个 % 号加上它两位的十六进制值,于是空格变成 %20,冒号变成 %3A。
这一点很重要,因为有几个字符是结构性的。? 开启查询字符串,& 分隔参数,= 把键和值绑在一起,/ 标记路径边界。如果你的某段数据恰好含有这些字符之一,就必须编码它,否则浏览器或服务器会把它当作结构来读,URL 的含义就和你的本意不一样了。
编码和解码如何在你的浏览器里运行
你一输入,工具就双向转换,用的是浏览器自带、作为 JavaScript 在你设备上运行的编码例程。编码会遍历你的文本,安全字符原样保留,其余每个字节都改写成它的 %XX 形式。解码则扫描 % 序列,把每一个还原成原来的字符。
由于这一切都在本地进行,没有到服务器的往返,也不用等待。这也意味着页面加载后即使离线工具照常可用;更重要的是,你粘贴的任何内容都留在你自己的机器上。这正是要用纯前端、而不是通过一个会收到你链接的网络服务来做这件事的全部理由。
带令牌链接的隐私保障
真实的 URL 常常塞满了敏感内容:会话 ID、签名过的查询参数、OAuth 授权码、密码重置令牌、跟踪标识,以及能临时授予私有文件访问权限的预签名存储链接。把这些粘进一个会传输它们的工具,等于把正在生效的凭据泄露给运行该服务的任何人。
在这里,什么都不会被上传、存储或记录。编码和解码只在你的浏览器里发生,所以你正在调试的一条签名回调 URL 或一条魔术链接绝不会离开你的设备,关掉标签页就消失了。这让这个工具成为一块安全的草稿板,可以用来检查那些你无法负责任地发往别处的重定向链和认证流程。
常见的调试任务
解码是在你信任一条链接之前快速读懂它的办法:粘贴一条布满 %2F、%3A、%3F 的 URL,可读版本会揭示它实际指向哪里、携带了什么参数。这对审查营销链接、检查重定向目标,或看清某个 OAuth 提供方到底往你的回调地址回传了什么,都很方便。
编码解决的是相反的问题。当你手工构造一条 URL——用于测试请求、深度链接或文档示例——而某个值里含有空格、& 或非英文文本时,先把这个值编码就能保住它的完整性,让查询字符串正确解析。做对这一步,决定了一条链接是到处都能用,还是别人一分享就坏掉。
保留字符,以及%20与加号的怪癖
了解哪些字符是保留字符、为什么保留,会很有帮助。/ ? # [ ] @ ! $ & ' ( ) * + , ; = 这类分隔符在 URL 里承载含义,所以编码它们会改变它们究竟是充当结构还是充当数据。当一个值必须真的包含其中某个字符时,就编码它;当它本就该发挥结构作用时,就别去动它。这正是“只编码参数值、别编码整条 URL”的关键所在。
另一个经典陷阱是空格。现代百分号编码在 URL 任何位置都把空格写成 %20,但更早的 application/x-www-form-urlencoded 约定——如今仍用于许多查询字符串和 HTML 表单提交——把它写成 +。两者都解码为空格;如果你看到意料之外的加号,那几乎可以肯定是在看历史遗留的表单编码,而不是链接损坏了。
接下来你可能会用到的相关工具
解码后的 URL 常常会暴露出嵌套在里面的其他编码。某个查询参数可能携带一段 Base64 数据,Base64 解码工具能把它打开;也可能是一个 JSON 字符串,JSON 格式化工具能把它整齐排开。一次用一个工具逐层深入,往往就是你弄清一条跟踪或认证链接到底在干什么的方式。
想在更底层一探究竟,二进制翻译器能展示 URL 里的字符是怎么映射成字节的,哈希生成器则能给两条链接生成指纹,检查它们是否完全相同。和这款 URL 编码解码工具一样,它们全都完全在你的浏览器里运行,所以你可以在它们之间传递敏感字符串,全程不让任何内容被上传。
常见问题
这个URL编码工具免费吗?
完全免费。不用注册、没有限制、没有任何水印,随便用。
隐私有保障吗?我的URL里有令牌。
有保障。编码解码只在你的浏览器里运行,粘贴的 URL 不会被传输或存储,签名链接和会话令牌始终留在你的电脑上。
空格的%20和+有什么区别?
%20 是空格在 URL 任何位置的标准百分号编码;+ 是查询字符串(application/x-www-form-urlencoded)特有的老式写法。两者都表示空格,如今 %20 是更稳妥的选择。
为什么编码之后我的URL反而坏了?
你多半把整条 URL 都编码了,这会转义掉赋予它结构的分隔符(/、?、&、=)。只编码单个参数值,再用编码后的片段拼出完整 URL。
支持中文等非英文字符吗?
支持。ASCII 之外的字符会按 UTF-8 编码成百分号序列,比如“北京”会变成 %E5%8C%97%E4%BA%AC,并能正确解码回来,阿拉伯文和 emoji 也一样。
手机上能用吗?
能。iPhone 和安卓的任何手机浏览器都可以,点开可疑的编码链接之前先在这里查一下很有用。