URL 编解码

对 URL 中的特殊字符进行编码,或解码百分号编码的 URL 字符串。Web 开发和 API 工作必备工具。

使用方法

  1. 在输入区域输入或粘贴文本或 URL
  2. 点击「编码」对特殊字符进行百分号编码,或点击「解码」转换回来
  3. 复制结果用于您的应用程序

常见问题

  • 什么是 URL 编码?

    URL 编码(也称百分号编码)将特殊字符替换为百分号后跟其十六进制值。例如,空格变为 %20。

  • 什么时候需要 URL 编码?

    在 URL 参数、查询字符串或将通过 HTTP 发送的表单数据中包含特殊字符时需要进行 URL 编码。

  • encodeURI 和 encodeURIComponent 有什么区别?

    encodeURI 编码完整的 URI,保留 :、/ 和 ? 等字符。encodeURIComponent 编码除字母、数字和少数特殊字符外的所有内容,适合编码单个参数值。

  • 支持 Unicode 字符吗?

    支持。Unicode 字符会先编码为 UTF-8 字节,然后每个字节进行百分号编码。

URL 编码的由来

URL(统一资源定位符)的规范规定,地址中只允许出现 ASCII 字母、数字以及少数几个特殊字符(-_.~)。其他字符,包括空格、中文、&=? 等,都必须经过编码才能安全地出现在 URL 中。这种编码方式叫做百分号编码(Percent-Encoding)

编码规则很简单:将字符转换为 UTF-8 字节,然后每个字节用 % 加两位十六进制数表示。例如,空格变为 %20,中文字"你"变为 %E4%BD%A0(三个字节)。

encodeURI 与 encodeURIComponent 的区别

这是 JavaScript 开发中一个经典的混淆点:

encodeURI 设计用来编码整个 URL,它会保留 URL 结构字符不编码,包括 :, //, ?, =, &, # 等。如果你的字符串是一个完整 URL,用这个函数。

encodeURIComponent 设计用来编码 URL 中的单个参数值,它会对几乎所有非字母数字字符进行编码,包括 ?=&。如果你要把一个值塞进查询参数里,必须用这个函数。

举个例子:

原始值:name=张三&city=北京
encodeURIComponent → name%3D%E5%BC%A0%E4%B8%89%26city%3D%E5%8C%97%E4%BA%AC

如果漏了编码直接拼接到 URL 里,& 会被解析为参数分隔符,导致参数解析错误。

常见使用场景

  • 搜索引擎查询:搜索"北京天气"时,浏览器会自动将请求 URL 编码为 q=%E5%8C%97%E4%BA%AC%E5%A4%A9%E6%B0%94
  • 表单提交:HTML 表单以 application/x-www-form-urlencoded 方式提交时,数据字段经过 URL 编码
  • API 调用:构建包含特殊字符的 REST API 请求时,参数值需要手动编码
  • 分享链接:将带参数的页面链接分享出去前,确保特殊字符已编码,避免链接断裂

使用本工具可以快速验证编码结果,排查因编码遗漏或重复编码(double encoding)导致的 bug。