在线工具箱
URL 编解码

URL 编解码工具

URL 百分号编解码、Base64URL 与 Punycode 中文域名互转,支持容错解码与批量处理。

隐私安全:所有处理均在您的浏览器本地完成,数据绝不上传
URL编码开发
编码方式

选项

工作原理

  1. 1选择子模式(URI 组件 / 完整 URI / Base64URL / Punycode)与方向(编码 / 解码),按需开启「+ 代替空格」或「批量模式」。
  2. 2URI 组件模式使用 encodeURIComponent,除 A-Za-z0-9-_.!~*'() 外全部转义为 %XX,适合处理单个查询参数值。
  3. 3完整 URI 模式使用 encodeURI,额外保留 :/?#[]@!$&'()*+,;= 等保留字符,适合处理整条链接以免破坏 URL 结构。
  4. 4解码时优先直接调用解码函数;遇到非法 % 序列则逐段降级:合法 %XX 按 UTF-8 解码,非法序列原样保留并统计位置。
  5. 5Base64URL 先取 UTF-8 字节再做 URL-safe Base64(+ / → - _,去掉 =);Punycode 按 RFC 3492 对每段域名做 NFKC 归一化后编码并加 xn-- 前缀。

常见问题

encodeURIComponent 和 encodeURI 有什么区别?该用哪个?

encodeURIComponent 只保留 A-Za-z0-9-_.!~*'(),会把 : / ? # & = 等全部转义,适合编码「单个参数值」;encodeURI 会保留 :/?#[]@!$&'()*+,;= 等保留字符,适合编码「整条 URL」,否则会把链接结构一起转义掉。本工具对两种模式都提供了说明与切换。

为什么解码后还残留 % 或者出现乱码?

两种情况:一是原始字符串本身就含非法序列(例如 %ZZ、%E5%8C% 这种被截断的多字节序列),decodeURIComponent 会直接抛 URIError;本工具改为逐段降级解码,把非法部分原样保留并在结果下方标出位置。二是数据本身不是 UTF-8 编码的,此时会出现替换字符(�)。

空格到底应该编码成 %20 还是 + ?

在 URL 路径与普通场景中空格编码为 %20;而在 application/x-www-form-urlencoded 表单提交(如查询串 a=1&b=2)中,空格传统上编码为 +。开启本工具的「+ 代替空格」即可按表单模式编码;解码时该选项会把 + 还原为空格,因此原始数据里的字面量 + 会被当作空格,请注意区分。

中文域名转成 xn-- 开头,浏览器能正常访问吗?

可以。xn-- 是 IDNA 规定的 ASCII 兼容编码(ACE)前缀,浏览器访问时会在内部还原为 Unicode 域名。本工具按 RFC 3492 实现 Punycode,并先对域名段做 NFKC 归一化与大小写折叠,结果与公开转换器一致,例如 例子.中国 ↔ xn--fsqu00a.xn--fiqs8s。

数据会上传到服务器吗?有长度限制吗?

不会。编码与解码全部在浏览器本地完成,不发起任何网络请求,断网也能正常使用。工具没有硬性长度限制,但受浏览器单页内存约束;实测接近 1MB 的中英混排文本编解码仍在毫秒级完成。

更多在线工具