URL 编码/解码

URL 编码,是把网址里不能直接出现的字符按 UTF-8 逐字节写成 %xx 形式,比如「中」变成 %E4%B8%AD,解码则是把 %xx 还原成文本。粘贴网址或字符串即可在浏览器本地互转:参数值选 component(连 : / ? & 也转义),整条网址选 uri(保留 :// 与 ?&),空格可按 + 输出。一个汉字固定占 9 个字符,中文与 emoji 往返不乱码。内容不上传,免费不注册。

🔒 编解码在你的浏览器内完成,内容不上传任何服务器。

如何使用URL 编码/解码

1

选模式:「编码(文本 → %xx)」把网址或字符串转成百分号编码,「解码(%xx → 文本)」把 %xx 还原成可读文本;切换模式会清空上一次结果。

2

把内容粘进输入框,再选编码范围:只转某个参数的值用 component(: / ? & = 也一并转义),转整条网址用 uri(保留 :// 和 ?&#)。component 下还会多出「空格按 + 处理」,勾上就按表单 application/x-www-form-urlencoded 的写法输出 +,不勾用标准的 %20。

3

点「编码」或「解码」出结果,结果条会显示字符数,点「复制」拿走。拿不准转对没有,点「⇄ 用结果反向验证」把结果回填成输入并切换模式,再跑一次看能不能原样还原。

关于URL 编码/解码的常见问题

URL 编码解码会不会上传我的网址内容
不会。编码和解码都由浏览器里的 JavaScript 在你的设备上完成,输入框里的网址、参数、token 都不会发往服务器,也不写入本地存储,关掉或刷新页面即清除。想自己确认:按 F12 打开开发者工具的「网络」面板,再点一次「编码」,整个过程不会产生任何请求。所以带内网地址、带签名参数的链接也可以直接粘进来处理。
网址里的中文怎么转成 %xx 编码
把含中文的网址或关键词粘进输入框,选「编码(文本 → %xx)」再点按钮即可。中文按 UTF-8 逐字节转成百分号序列:一个常见汉字占 3 个字节、编出 9 个字符,「小鹿」就是 %E5%B0%8F%E9%B9%BF,「中」是 %E4%B8%AD。只想编码 q= 后面的搜索词,用 component 范围;要把一整条含中文路径的网址转成能贴进代码或聊天窗的形式,用 uri 范围,它会保留 :// 和 ?& 不动。
URL 编码 component 和 uri 怎么选
按你编的是「参数值」还是「一整条网址」来选。component 对应 encodeURIComponent,把 : / ? # & = 这些分隔符也转义,适合编码单个参数的值;uri 对应 encodeURI,保留这些分隔符,适合处理整条网址。举个例子:https://example.com/a?b=1&c=2 用 component 会变成 https%3A%2F%2Fexample.com%2Fa%3Fb%3D1%26c%3D2,整条链接不再可点;用 uri 则原样保留结构,只转中文和空格。反过来,参数值里如果含 & 或 = 却用了 uri,链接结构会被拆错,参数从那里就断了。
URL 编码里的加号 + 是空格吗
看它出现在哪里。在 application/x-www-form-urlencoded(表单提交和查询串)里 + 表示空格,标准 URL 路径里 + 就是加号本身。所以本工具把它做成 component 范围下的可选项:勾上「空格按 + 处理」,编码时空格写成 +、解码时 + 还原成空格;不勾就用通用的 %20。这里有个坑——如果原文里的加号是真加号(比如 C++、1+1),勾着解码会把它错当成空格,这时取消勾选再解一次即可;真正的加号编码后是 %2B,不受影响。
URL 解码提示 %xx 序列错误怎么解决
这个提示说明输入里存在不完整或非法的百分号序列,常见三种:写错的 %zz、孤零零的一个 %、以及从聊天记录或日志里复制时被截断的半个汉字(如只剩 %E4%B8,少了最后一段)。先回原处重新完整复制一遍;如果内容本来就是普通文本、只是恰好含 %(比如「涨幅 20%」),那它不需要解码,直接用即可。另外,老站点用 GBK 编码的网址(形如 %D6%D0)在这里也会报同样的错——浏览器原生解码只认 UTF-8,遇到不合法的字节组合就会拒绝,这类链接需要用支持 GBK 的工具处理。
URL 解码后 %26 %3F 为什么没还原
因为用的是 uri 范围。uri 对应 decodeURI,它按设计不还原 & ? # / : = 这些保留字符——如果还原了,%26 会变成真的 &,整条网址的参数结构就被改写了。要把参数值里的 %26 还原成 &、%3F 还原成 ?,把「编码范围」改成 component 再解一次即可。判断方法很简单:解出来的结果里还剩 %26、%3F、%23 这类序列,多半就是范围选错了,切成 component 重解一遍。
URL 编码后中文变成 %25E4 开头怎么办
这是双重编码:内容已经是 %xx 形式,又被编了一次,% 本身被转成了 %25,于是 %E4%B8%AD 变成 %25E4%25B8%25AD。解法是切到解码模式多解一次——第一次解出 %E4%B8%AD,第二次才还原成「中」。要避免它,编码前先看一眼输入里有没有现成的 %xx;处理完用「⇄ 用结果反向验证」跑一轮,能一次还原成原文就说明层数是对的。后端和前端各编码一次是最常见的成因,链接里出现 %2520(%20 被再编一次)也是同一回事。
URL 编码后网址会变长多少字符
按 UTF-8 字节数算:每个需要转义的字节变成 3 个字符(%加两位十六进制),常见汉字 3 字节编成 9 个字符,emoji 4 字节编成 12 个字符(😀 是 %F0%9F%98%80),空格是 %20(3 个字符,勾了「空格按 +」则只占 1 个)。举个实算:「小鹿tools 免费」10 个字符,编码后是 44 个字符——两个汉字 18、tools 原样 5、空格 3、两个汉字 18。所以中文关键词多的网址容易膨胀,而不少服务器和浏览器把 URL 长度限制在 2000 字符量级,做长链接、二维码或短信推送前值得先在结果条上看一眼字符数。
手机上能用 URL 编码解码工具吗
可以。用手机浏览器(iOS Safari、安卓 Chrome、微信内置浏览器都行)打开本页,长按粘贴网址、选好编码范围、点按钮就能得到结果,处理同样在手机本地完成,不用装 App。结果区点「复制」即可直接粘到微信、备忘录或浏览器地址栏。从微信里复制的链接常带 ?from=… 之类的跟踪参数,粘进来解码就能看清整条网址到底指向哪儿。

URL 编码对照表:中文、空格、& 各转成什么

一句话看懂两种范围的差别:component 把分隔符也转义,uri 把它们留着。下表是常见字符在两种范围下的实际结果,可以直接粘进工具对一对。

常见字符的 URL 编码结果(component 为完整转义,uri 保留分隔符)
字符component 范围uri 范围说明
中(一个汉字)%E4%B8%AD%E4%B8%ADUTF-8 下 3 个字节,编成 9 个字符
😀(emoji)%F0%9F%98%80%F0%9F%98%804 个字节,编成 12 个字符
空格%20(勾选后为 +)%20表单查询串里习惯写成 +
&%26& 原样保留参数值里不转义会被当成参数分隔符,链接从这里断
?%3F? 原样保留不转义会被当成查询串的开始
/%2F/ 原样保留整条网址要保路径结构就用 uri
#%23# 原样保留不转义会被当成锚点,后面的内容不发给服务器
%%25%25已编码内容再编一次,就是双重编码的来源
- _ . ! ~ * ' ( )原样保留原样保留这 9 个字符两种范围都不转义

URL 编码解码出错的常见情况怎么排查

URL 解码出问题分两类:一类直接报「不是有效的 URL 编码(%xx 序列错误)」,一类不报错但结果不对——后者更难发现,因为半成品看着也像正常编码。对着下表按现象找原因。

URL 编码/解码常见故障对照
现象原因怎么改
提示「不是有效的 URL 编码(%xx 序列错误)」有 %zz、单独的 %,或复制时截断了半个汉字(只剩 %E4%B8)回原处重新完整复制;内容若本就是含 % 的普通文本,不需要解码
解出来一串报错,链接来自很老的站点网址按 GBK 编码(形如 %D6%D0),浏览器原生解码只认 UTF-8这类链接需用支持 GBK 的工具处理,本工具按 UTF-8 解
解码后 %26、%3F、%23 还留着用了 uri 范围,decodeURI 按设计不还原保留字符把编码范围改成 component 再解一次
解出来还是 %E4%B8%AD 这种半成品原串是双重编码,% 被编成了 %25再解一次;用「⇄ 用结果反向验证」确认能一次还原成原文
加号莫名其妙变成了空格勾了「空格按 +」,但原文里的 + 是真加号(如 C++)取消勾选再解一次;真加号编码后是 %2B,不会被误判
编码后链接不能点了整条网址用了 component,:// 和 ?& 全被转义改用 uri 范围;只有单个参数值才用 component

相关工具:网址参数里那种 eyJhbGciOi… 的长串多半是 Base64 编码/解码,其中 JWT 可以用 JWT 解码器直接看清载荷;把两条编码前后的网址放一起比对差异,用 文本对比更快;手头是一整段文字或一页网页源码、要先把里面的网址一条条捞出来再逐条编解码,用 提取链接,它还能顺手去掉 utm 这类跟踪参数。嫌中文路径编码后一个汉字要占 9 个字符、网址太长,可以用 URL Slug 生成器把中文标题转成拼音网址后缀,从源头避开百分号编码。中文或空格没编码,请求发出去往往换来一个 404 或 400, 想确认这个状态码到底是什么意思、该查调用方还是服务端,用 HTTP 状态码查询