按 ⌘K 切换工具
ENCODE & DECODE
URL 编码 / 解码
使用百分比编码对URL组件进行编码和解码。
url-encode
§01 关于此工具
概述
百分号编码把不安全或者保留的字符表示成 %XX 形式的十六进制转义,
让它们可以安全地待在 URL 里。这个工具封装了浏览器的原生函数:组件模式用
encodeURIComponent / decodeURIComponent,Whole URI 模式用 encodeURI / decodeURI,
后者会保留 :、/、?、& 这类结构分隔符。
分不清这两个模式是最常见的出错来源。把一整条 URL 丢进组件模式,:// 会被转义成
%3A%2F%2F,链接就废了;反过来,把一个本身包含 & 的参数值丢进整条 URI 模式,
这个 & 会被原样留下,于是参数在服务端被提前截断。
使用方法
- 用模式标签选择 Encode 或 Decode。
- 不勾选 Whole URI (encodeURI) 就是编码单个组件(查询参数值、路径片段);勾选它则处理一整条 URL 而不破坏它的分隔符。
- 在 Input 里输入或粘贴内容——Result 框随着你的输入更新。
示例
- 组件编码:
a b&c=1→a%20b%26c%3D1 - 整条 URI 编码:
https://example.com/?q=a b→https://example.com/?q=a%20b(://、?、=都留了下来) - 解码:
caf%C3%A9→café
说明
对已经编码过的字符串再编码一次会造成双重转义(%20 变成 %2520),
这是链接失效的常见原因。非 ASCII 输入按 UTF-8 字节编码,
所以一个字符可能展开成好几段 %XX。如果拿不准一段文本是否已经编码过,
先做一次解码看结果有没有变化,再决定要不要编码。
FAQ
我粘贴进来的内容会被上传吗?
不会。编码和解码完全在浏览器内通过原生的 encodeURIComponent、encodeURI、decodeURIComponent 和 decodeURI 函数完成,不向任何服务器发送数据。
什么时候该勾选 Whole URI 而不是用默认的组件模式?
对查询参数这类单个值,用组件模式(默认)——它会编码 /、?、& 和 = 这些保留字符。当你手上是一整条 URL 并且想保住它的结构时,勾选 Whole URI;encodeURI 会放过这些分隔符,只转义在 URI 里非法的字符。
为什么解码有时会失败并报错?
百分号后面必须跟两个十六进制数字。像 %ZZ 或者结尾孤零零的一个 % 都构成畸形转义,decodeURIComponent 会抛异常——工具会显示 "Invalid input for decoding" 而不是给出结果。