编码/解码

URL 编解码

URL 编码(百分号编码)与解码

编码方式:
原始文本/URL
URL 编码结果
结果将显示在这里

什么是 URL 编码?

URL 编码(也称为百分号编码)是一种将特殊字符转换为 %XX 格式的编码方式。由于 URL 只能使用 ASCII 字符集,非 ASCII 字符和一些保留字符需要进行编码后才能在 URL 中安全传输。

编码方式说明

  • encodeURIComponent:编码 URL 参数值,会编码大多数特殊字符(推荐用于参数值)
  • encodeURI:编码整个 URL,保留 URL 结构字符(: / ? # @ 等)
  • 全部编码:编码所有非字母数字字符,最严格的编码方式

使用场景

  • 构建 URL 查询参数:确保参数值不会破坏 URL 结构
  • API 请求:编码请求参数中的特殊字符
  • 跨系统数据传输:确保数据在不同系统间正确传递
  • 调试分析:解码已编码的 URL 查看原始内容

常见编码字符

  • 空格 → %20 或 +
  • 中文字符 → UTF-8 编码后转 %XX
  • & → %26
  • = → %3D
  • / → %2F

常见问题

encodeURIComponent 和 encodeURI 用哪个?
编码参数值用 encodeURIComponent——它会编码 =、&、?、/ 等保留字符,保证参数内容不破坏 URL 结构。编码整个 URL 用 encodeURI,它保留结构字符(: / ? # 等)。最常见的错误是用 encodeURI 编码参数值,导致值里的 & 被当作参数分隔符。
空格应该编码成 %20 还是 +?
取决于语境:在表单编码(application/x-www-form-urlencoded)里是 +;在 RFC 3986 标准的 URL 里必须是 %20,encodeURIComponent 输出的就是 %20。跨系统传参出问题时,"+"与"%20"混用往往就是元凶。
为什么解码后出现 � 替换符?
说明字节序列不是合法 UTF-8:通常是编码与解码用了不同编码(如 GBK 内容按 UTF-8 解码),或 % 序列被二次编码/解码(%2520 → %20 → 空格)。检查整条链路的编码约定,本工具的三种严格编码模式可帮助定位。