在线 URL 编码和解码工具,支持 URI 组件编码(encodeURIComponent)和完整 URL 编码。浏览器本地处理,数据安全。
摘要:免费的 URL 编解码工具:组件/完整 URI 模式,支持空格→+、宽松解码与多层 peel,浏览器本地运行。
本地工具可在 DevTools → Network 搜索输入内容,通常不会出现在请求中。
下一步
使用指南
URL 里只允许出现 ASCII 的一个子集:中文、空格、&、=、# 这些字符直接拼进链接要么语义被吃掉、要么直接报错。本工具可选组件模式(encodeURIComponent)或完整 URI 模式(encodeURI);编码可勾选「空格写成 +」,解码可勾选「+ → 空格」「宽松保留非法 %」「剥开所有编码层」,全部本地完成。
1. 编码与解码
默认严格解码:孤立的 %(如字面量 100%)会报 URIError。勾选宽松后,合法 %HH 仍解码,非法片段原样保留——适合从日志里抠半截编码串。
- 选模式:Component(参数值/路径段)或 Full URI(整条地址,保留 :/?#&=)。
- 编码:默认空格→%20;要对齐表单/query 习惯时勾选「空格写成 +」。
- 解码:表单串勾选「+ → 空格」;截断链接勾选「宽松」;怀疑双重编码勾选「剥开所有编码层」(输出旁显示剥了几层)。
- 复制结果,替换进你的链接或代码。
2. encodeURI 还是 encodeURIComponent
两者的差别在保留字符:encodeURI 保留 URL 结构字符(:/?#&= 等),适合编码「整个 URL」;encodeURIComponent 连 & = / 也一起编码,适合编码「要放进 URL 里的一个值」。页面上的模式切换对应这两套语义。记一条:整个链接用 Full URI,参数值永远用 Component。
3. 三个高频坑
- 空格的两种命运:%20(RFC)和 +(form-urlencoded)。编码侧用「空格写成 +」,解码侧用「+ → 空格」;两侧开关要成对理解。
- 双重编码:%2520 是 %20 被再次编码的结果。勾选「剥开所有编码层」可一次还原并看到层数(2 = 编了两次)。
- 该编码而没编码的字符:参数值里的中文、&、=、#、空格都必须编码。
4. 与本工具的边界
默认 Component:空格→%20;勾选后才产出表单风格的 +。解码默认不把 + 转空格、默认严格抛错。Full URI 走 encodeURI/decodeURI。结构化拆链仍用 url-parser / url-params-parser。
5. 中文与特殊字符的编码链路
- 「中」的 UTF-8 百分号编码是 %E4%B8%AD——三字节对应三段 %XX。
- 加号陷阱:form-urlencoded 里 + 代表空格,纯路径与默认 decode 里 + 就是加号。
- 双重编码的识别:%25 开头连续出现,或 peel 层数 ≥ 2。
6. 表单编码、路径编码与查询串的分工
三种场景常被混成「URL 编码」一词:路径段里的空格与中文(几乎总是 %20 / UTF-8 百分号)、查询参数值(可能是 %20,也可能是历史 form 的 +)、以及 application/x-www-form-urlencoded 请求体(标准就是 + 表示空格)。本页用 Component / Full URI 模式区分「编一个值」与「编整条 URI」;空格写成 +、+→空格、宽松、剥层是排错开关,不是默认生产策略。结构化增删参数请改用 URL 参数解析器,避免在字符串层手撕 &。
7. 联调时「编码了却还是 400」的检查单
- 先确认坏在哪一层:浏览器地址栏、反向代理日志、还是应用框架的 query 解析——三层各自可能再编或再解一次。
- JSON 放进 query 时必须整体 Component 编码;只编码内部中文、外层花括号裸奔,会在 & 处被拆断。
- 日志里看到 %25 连续出现:先 peel 看层数,再决定是网关重复编码还是客户端写了两次 encode。
- Full URI 模式不会编码已有的 ?&=;若你的「整条 URL」其实只是一段要当参数的回调地址,应改用 Component。
- 中文域名(IDN)在浏览器里常显示为 Unicode,传到线上却是 xn-- 开头的 Punycode——本页处理的是百分号编码路径/参数,不负责 IDN ↔ Punycode 互转。
常见问题
看要编码的是「一个值」还是「整条地址」:encodeURIComponent 连 / ? : & = 一起编码,用于参数值;encodeURI 保留 URL 结构字符,用于完整链接。页面上的「组件 / 完整 URI」模式对应这两套语义。记一条:整个链接用 Full URI,参数值永远用 Component。
RFC 百分号编码用 %20;application/x-www-form-urlencoded(表单提交与许多查询解析器)用 +。本工具默认输出 %20,勾选「空格写成 +」才产出表单风格;解码侧默认不把 + 当空格,勾选「+ → 空格」才转换,两侧开关要成对理解。
%2520 是被编码了两次的空格(%20 再编一次),勾选「剥开所有编码层」可一次还原并显示层数。孤立的 %(如字面量 100%)在默认严格模式下会抛 URIError;勾选「宽松」后非法片段原样保留、合法 %HH 照常解码,适合从日志里抠半截编码串。
查三层:JSON 放进 query 必须整体用组件模式编码,只编内部中文、外层花括号裸奔会在 & 处被拆断;日志里 %25 连续出现说明被编了两次,先用剥层看层数,再定位是网关重复编码还是客户端调了两次 encode;Full URI 模式不编码已有的 ?&=,把整条 URL 当参数值传递时应改用 Component 模式。
URL 标准只允许 ASCII 的一个子集,「中」必须编成 UTF-8 百分号形式 %E4%B8%AD(三个字节对应三段 %XX)才能正确传输。中文域名是另一回事:浏览器显示 Unicode,线上传输的却是 xn-- 开头的 Punycode,本页处理百分号编码,不做 IDN 与 Punycode 互转。
不会发往任何地方。各模式下的编码、解码、剥层全部在浏览器本地完成,链接不离开你的设备。
相关工具
相关文章
在线 URL 编解码工具:百分号编码原理与实践
学习 URL 编码(百分号编码)的原理和使用方法。了解编解码场景、空格/%20/+、双重编码排查,以及组件模式与完整 URI 模式的取舍。
Base64 与 Base64URL:padding、JWT 三段与 PEM 换行
标准 Base64 与 Base64URL 在码表与 padding 上不同。弄清 JWT 三段为何用 Base64URL、PEM 为何按 64 列换行,以及工具方言不一致时如何停止误诊。
字符编码乱码排错手册:中文乱码、URL 编码、Base64 一次讲清
中文变问号、锟斤拷、%E4%B8%AD 看不懂?本手册按症状速查,覆盖乱码成因、URL 百分号编码、Base64 中文问题、Unicode 转义四类高频场景,附编码基础速查与排查流程。