URL 编码解码工具

在浏览器中运行,不上传任何内容

为 URL 对文本进行百分号编码、解码,或把 URL 拆分成各个部分和查询参数。

Text

Encodes everything except letters, digits and - _ . ! ~ * ' ( ). Use it for one query value or path segment.

Encoded

The encoded text appears here as you type.

Ready

什么是 URL 编码?

URL 编码也叫百分号编码(RFC 3986),它把 URL 中不允许出现或有特殊含义的字符替换为 % 加两位十六进制数字。空格变成 %20,& 变成 %26,/ 变成 %2F。其他字符先转换为 UTF-8 字节,所以 é 变成 %C3%A9,中文字符也会变成多组 %XX。

这很重要,因为有些字符本身就构成 URL 的结构。? 开始查询字符串,& 分隔参数,= 分隔参数名和值,# 开始片段。如果搜索词中包含 & 却没有编码,服务器会把它当作一个新参数的开始。

应该单独编码每个值,而不是整个 URL。把完整的 URL 当作值来编码,会把它的 ://、/ 和 ? 也编码掉,导致 URL 失效;整个 URL 模式正是为此而设,用于在一个本身正确的 URL 中只修正空格和特殊字符。

使用方法

  1. 1选择 Encode、Decode 或 Parse。切换时会保留你的文本;Swap(Alt+Shift+S)会把输出移到输入,并在 Encode 和 Decode 之间切换。
  2. 2编码时,选择文本的类型:单个值(encodeURIComponent)、整个 URL(encodeURI),或空格变成 + 的表单数据。编辑器上方的一行会准确说明每种方式保留哪些字符。
  3. 3解码时,粘贴编码后的文本。对于 HTML 表单提交的表单数据和查询字符串,请打开 + means space。如果某个序列格式错误或不是 UTF-8,它会在编辑器中标出,按 F8 可以跳转过去。
  4. 4如果结果中仍然包含 %XX,说明文本被编码了两次;点击状态栏中的 Decode again 再解码一次。
  5. 5Each line separately 会把每一行当作独立的值来处理,适合值列表。Parse 会把一个 URL 拆分为协议、主机、端口、路径、片段,以及已解码的查询参数表,可以复制为 JSON。

问题排查

% 后面必须跟两位十六进制数字
文本中有字面上的百分号,例如 100%,或者有被截断的序列。在 URL 中,真正的百分号要写成 %25。
%E9 在此处不是有效的 UTF-8
文本是由使用 Latin-1 而不是 UTF-8 的旧编码器编码的,所以 é 变成了 %E9 而不是 %C3%A9。请重新编码原始文本,或让发送方使用 UTF-8。
+ 变成了空格,或者空格仍然是 +
只有在表单数据(application/x-www-form-urlencoded)中,例如 HTML 表单提交的查询字符串,+ 才表示空格。请根据文本的来源打开或关闭 + means space。
不是绝对 URL
Parse 需要协议和主机,例如 https://api.example.com。/users?page=2 这样的路径是相对于某个页面的,无法单独解析。

常见问题

encodeURI 和 encodeURIComponent 有什么区别?

encodeURIComponent 会编码除字母、数字和 - _ . ! ~ * ' ( ) 之外的所有字符,所以适合单个值。encodeURI 会保留构成 URL 结构的字符,例如 : / ? # & = +,所以适合只需修正不安全字符的完整 URL。

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

在路径和大多数 API 中,使用 %20。只有表单数据中 + 才表示空格,浏览器提交 HTML 表单时发送的就是这种格式,很多查询字符串也这样用。解码由表单生成的查询字符串时,请打开 + means space。

为什么 Parse 显示的 URL 和我粘贴的不一样?

Parse 使用浏览器的 URL 解析器,它会规范化 URL:把协议和主机转为小写,去掉 :443 这样的默认端口,并对空格和非 ASCII 字符进行百分号编码。Copy URL 复制的就是规范化后的形式。

我的输入会发送到服务器吗?

不会。编码、解码和解析都在你的浏览器中完成,粘贴的内容不会上传。为了刷新后不丢失,粘贴的内容会保存在当前标签页的 session storage 中,直到你清除它或关闭标签页。Copy link 会把输入放在链接的 # 之后,浏览器从不把这部分发送给服务器,但拿到链接的人都能看到内容。