URL 编解码URL Encode / Decode
encodeURIComponent / encodeURI 双模式在线编解码,解码方向支持逐层还原被多重编码的字符串(%2520 → 空格),调试查询参数、构造回调地址、排查乱码更快。数据全程不上传。
工具介绍
3 段详细说明URL 编解码是处理 URL 与特殊字符转换的标准工具。无论是含中文 / 空格的查询参数、OAuth 回调地址还是埋点日志里的地址串,粘贴进来即可一键双向转换,完整支持 encodeURIComponent / encodeURI 两种模式,解码方向还能逐层还原被多重编码的字符串。
所有转换都在浏览器内存中完成,内容不上传任何服务器。基于浏览器原生 encodeURIComponent / decodeURIComponent,按 RFC 3986 百分号编码实现,零依赖、零打包,1 MB 以内编码几乎瞬时(< 100ms)。
排查「网址乱码」时最怕被编了两次:多次解码 自动逐层还原(%2520 → %20 → 空格);解码报错时给出「第 X 行 第 Y 列」定位与人话解释;点「交换」把结果送回输入框反向转换,编解码往返验证两不误。
基础知识 · URL 编码原理
RFC 3986 · 百分号编码URL 编码(百分号编码)是让任意字符在 URL 中安全出现的标准方案(RFC 3986)。核心规则只有一句话:不安全的字符按 UTF-8 字节逐个转成 %XX:
percent-encoding百分号编码- . _ ~ 等未保留字符。其余字符按 UTF-8 字节逐个转成 %XX 形式(如空格 → %20),这就是百分号编码(RFC 3986)。reserved chars保留字符: / ? # [ ] @ 等字符在 URL 中有结构含义(分隔协议、路径、查询串)。给整个地址编码时应保留它们;给参数值编码时则要一并转义,否则会被误当成结构符。component vs fullencodeURIComponent vs encodeURIencodeURI 编码整个 URL,保留 ://?&#= 结构符;encodeURIComponent 编码 URL 组件(参数值),结构符也一起转义。给参数值用组件模式,给完整地址用完整模式。%20 vs +空格的两种形态%20 是标准百分号编码;+ 是 HTML 表单(application/x-www-form-urlencoded)的约定。本工具按标准输出 %20;注意 decodeURIComponent 不会把 + 还原成空格,表单串需先手动替换。double encoding双重编码陷阱%25,于是 %E8%9C%97 二次编码后变成 %25E8%259C%2597。网关 / 框架重复转义是「网页乱码」的常见根因,用多次解码逐层还原即可定位。utf-8 bytes中文 = 3 字节E8 9C 97,对应 %E8%9C%97;emoji 占 4 字节,对应 6 组 %XX。看到一长串 %XX 不必慌,那是多字节字符的正常形态。?q=%E8%9C%97%E7%89%9B%20%E5%B7%A5%E5%85%B7%E7%AE%B1,中文、空格、& 都安全。redirect_uri、notify_url 的值是完整 URL,必须用组件模式整体编码,防止内部的 & ? 破坏外层结构。%20 · ! %21 · # %23 · & %26 · + %2B · = %3D · ? %3F · @ %40。使用说明
4 步快速入门使用场景
5 个真实案例把含中文、空格、特殊符号的 query 参数编码成合法 URL,排查 400 / 参数丢失报错。
回调地址里出现 %2520 之类被编了两次的串,勾选「多次解码」逐层还原定位层级。
OAuth redirect_uri、支付 notify_url 等参数值整体编码,防止内部的 & ? 破坏外层 URL 结构。
把日志、爬虫输出里一长串 %XX 还原成可读的中文地址,快速核对来源与参数。
对比 encodeURI 与 encodeURIComponent 的输出差异,确认接口该用哪种模式传参。
常见问题
10 个问答URL 编解码工具是什么?有什么用?
把 URL 中不允许直接出现的字符(中文、空格、& = ? 等)转成 %XX 百分号编码形式,或反向还原。支持 encodeURIComponent / encodeURI 双模式与多次解码,常用于调试查询参数、构造回调地址、排查乱码。
encodeURI 和 encodeURIComponent 有什么区别?
encodeURI 编码整个 URL,保留 ://?&#= 等结构符;encodeURIComponent 编码 URL 组件(参数值),结构符也一起转义。给完整地址用前者,给参数值用后者——后者更常用。
我的数据会上传到服务器吗?
不会。所有编解码在浏览器内存中完成,输入内容不上传任何服务器。可断网使用,关闭网络后再打开仍能正常使用。
空格会变成 %20 还是 +?
本工具按标准输出 %20。+ 是 HTML 表单(application/x-www-form-urlencoded)的历史约定。注意 JS 的 decodeURIComponent 不会把 + 还原成空格,解码表单串时可先手动把 + 替换成 %20。
什么是双重编码?怎么还原?
「%」本身被编码成 %25,导致 %E8%9C%97 变成 %25E8%259C%2597,解码一次还乱码。常见于网关、框架、模板引擎重复转义。勾选「多次解码」即可逐层还原(最多 10 层,防死循环)。
解码报错怎么排查?
输出区会给出人话提示(第 X 行 第 Y 列 + 原因 + 💡修复建议),输入区自动选中出错字符并红框定位。常见原因:% 后面不是 2 位十六进制(复制不完整或普通 % 未写成 %25)、字节序列不是合法 UTF-8。
支持多大的文本?
建议 ≤ 10 MB。原生编码函数在 1 MB 以内几乎瞬时(<100ms)。编码是纯字符串操作,比 JSON 解析还快。
移动端能用吗?
支持。移动端输入/输出自动垂直堆叠,操作按钮自适应布局。手机上可粘贴微信 / 飞书里收到的编码串直接解码查看。
离线能用吗?
能。PWA 已上线,首次访问后浏览器会缓存所有资源,断网后仍可使用。
结果可以一键复制吗?
可以。点击「复制」按钮即可把结果复制到剪贴板;点「交换」还能把结果送回输入框反向转换,验证编解码往返一致性。
相关工具
开发者分类数据来源
隐私优先encodeURIComponent / encodeURI 与 decodeURIComponent / decodeURI,按 RFC 3986 百分号编码实现,UTF-8 完整支持。多次解码逐层还原、上限 10 层;错误定位基于对非法 % 序列的逐字符扫描,无 WASM、无 polyfill。