MS

免费工具 · 在浏览器中运行

URL 编码和解码

把文本编码后安全地放进网址,把百分号编码的文本还原,并列出查询字符串中的参数。

快速解答

网址只能包含部分字符,其他字符要写成百分号编码:空格变成 %20,& 变成 %26,汉字会转换为 UTF-8 字节,例如“中”变成 %E4%B8%AD。对单个值(例如搜索词或参数)请用编码;勾选整个 URL 则会保留 : / ? & =。解码会把它还原为可读文字。

使用方法

  1. 选择编码或解码. 编码让文本可以安全用于网址;解码把 % 编码还原为文字。
  2. 粘贴文本或网址. 参数值、完整链接或日志中的编码字符串都可以。
  3. 复制结果. 如果输入的是链接,还会列出其中的查询参数。

示例

把一个查询字符串作为单个值编码:

输入

name=Sara Levi&city=Tel Aviv

输出

name%3DSara%20Levi%26city%3DTel%20Aviv

常见错误及解决方法

URIError: URI malformed
有一个 % 后面不是两位十六进制数字,或者编码不是有效的 UTF-8。% 本身请编码为 %25。
解码后空格显示为 +
表单数据把空格写成 +。请勾选“把 + 当作空格”,或使用会自动处理的 URLSearchParams。
链接中出现 %2520
值被编码了两次。每个值只在加入网址前编码一次。
& 后面的参数丢失了
值中包含未编码的 & 或 #。请用 encodeURIComponent 编码每个值,而不是用 encodeURI 编码整个网址。

常见问题

什么是 URL 编码?

把网址中不允许出现或有特殊含义的字符写成 % 加两位十六进制数字,例如空格写成 %20。

encodeURIComponent 和 encodeURI 有什么区别?

encodeURIComponent 会编码所有有特殊含义的字符,包括 / ? & 和 =,适合单个值;encodeURI 保留这些字符,让整个网址仍然可用。本工具默认使用 encodeURIComponent,勾选“整个 URL”时使用 encodeURI。

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

在路径中空格是 %20;在表单数据和很多查询字符串中,+ 也表示空格。解码表单数据时请勾选“把 + 当作空格”。

为什么链接在 & 或 # 处被截断?

这些字符会结束一个参数或开始一个片段。用 encodeURIComponent 编码每个值,& 会变成 %26,# 变成 %23。

%2520 是什么意思?

文本被编码了两次:%20 又被编码成了 %2520。再解码一次,并修复重复编码的代码。

中文在网址里怎么编码?

每个汉字先转为 UTF-8 字节(通常 3 个字节),每个字节写成 %XX。例如“中”是 %E4%B8%AD。浏览器地址栏通常显示中文,但实际发送的是编码后的版本。

JavaScript 中怎么编码 URL?

单个参数用 encodeURIComponent(value),构建查询字符串可以用 new URLSearchParams({ q: value }).toString()。

Python 中怎么编码 URL?

路径部分用 urllib.parse.quote(value),查询字符串用 urllib.parse.urlencode({"q": value})。

URL 编码和 Base64 一样吗?

不一样。百分号编码只替换不安全的字符;Base64 会用 64 个字符重写全部数据。

我的数据会被发送出去吗?

不会。编码和解码都在你的浏览器中完成。

相关内容