URL 编码解码工具

对文本进行编码以安全用于网址(百分号编码),或解码还原。对查询参数和链接至关重要。

URL编码是什么

URL 编码也称为百分比编码,用百分号后跟代码替换网址中不安全的字符。空格变为 %20,& 符号变为 %26,依此类推。这使您可以将任何文本、空格、重音符号、符号放入 URL 中,而不会破坏它。该工具对文本进行编码以便在 URL 中安全使用,并将百分比编码文本解码回可读形式。

为什么有必要

URL 可以安全包含的字符集有限。当您将包含空格、斜杠、问号或非英文字母的搜索词、参数值或路径段直接放入 URL 中时,这些字符可能会被误解并破坏链接。编码将它们转换为服务器和浏览器可以正确解码的安全表示形式。任何以编程方式构建查询字符串、API 调用或链接的人都需要不断地这样做。

编码和解码

编码采用可读文本并使其成为 URL 安全的,这在构建链接或查询参数时至关重要。解码则相反,将百分比编码的字符串重新转换为可读文本,这在您读取某人发送给您的 URL、调试 API 调用或检查参数实际包含的内容时非常有用。该工具只需单击一下即可完成这两项操作,并通过 UTF-8 正确处理重音字符和非英语字符。

常见情况

构建一个搜索 URL,其中查询包含空格和符号。通过查询参数传递包含与号或等号的值,而不破坏 URL 结构。读取长的、编码的 URL 以了解它指向的内容。构造必须对参数进行编码的 API 请求。由于它在浏览器中运行,因此您可以安全地对包含敏感数据的值进行编码或解码。

URL编码是什么

URL 编码,也称为百分比编码,用百分号后跟两个十六进制数字替换 URL 中不安全或保留的字符。空格变为 %20,& 符号变为 %26,依此类推。 RFC 3986 标准将 URL 限制为一小组 ASCII 字符,因此该组之外的任何内容(空格、重音符号、表情符号或保留符号,如 ?) & = # 当用作数据时,必须进行编码,以便在不破坏 URL 结构的情况下从浏览器传输到服务器。

编码 URI 与 编码 URIComponent

JavaScript 提供了两种编码函数,选择错误是一个常见的错误。 encodeURIComponent 对保留的所有内容进行编码,这就是您想要放入查询字符串、搜索词、参数值、重定向目标中的各个值的内容。 encodeURI 保留 URL 结构字符,如 / ? & = ,用于对整个 URL 进行编码,同时保持其功能。经验法则:对 URL 内的值使用encodeURIComponent,而仅对整个 URL 使用encodeURI。该工具对组件进行编码,这是您大多数时候所需要的。

常见的 URL 编码错误

有两个错误占主导地位。当你对已经编码的字符串进行编码时,就会发生双重编码,%20 变成 %2520,这会破坏链接;仅对原始文本进行编码,绝不对已编码的 URL 进行编码,如果不确定,请先进行解码。另一个是加号的歧义:在查询字符串中,+ 可以表示空格(来自 HTML 表单编码),但在 URL 路径中它是文字加号。如有疑问,请使用 %20 表示空格,这样在任何地方都不会产生歧义。另请记住,值中未编码的 & 会被误读为参数分隔符,从而分割数据。

常见问题

URL编码和Base64有什么区别?
URL 编码通过对不安全字符进行百分比编码,使文本对于网址来说是安全的。 Base64 是一种不同的编码,用于使二进制数据成为文本安全的。它们有不同的用途并且不能互换。
为什么空格会变成%20?
URL 中不允许使用空格,因此编码将其替换为 %20,这是浏览器和服务器解码回空格的安全表示形式。有些上下文使用加号代替。
它可以处理重音字符和非英语字符吗?
是的。该工具通过 UTF-8 进行编码,因此任何语言的重音字母和字符都可以正确编码和解码。
我什么时候需要解码 URL?
当您想要读取编码的 URL 或参数实际包含的内容时,这对于调试 API 调用、检查链接或理解某人发送给您的长编码地址很有用。
我的数据是私人的吗?
是的。编码和解码在您的浏览器中进行,无需上传。
URL 编码和解码有什么区别?
编码将不安全的字符转换为百分号代码(空格变为 %20),因此 URL 中的文本是安全的。解码会反转它,将 %20 变回显示空间。使用encode 构建URL,使用decode 读取URL。
我什么时候应该使用encodeURIComponent,什么时候应该使用encodeURI?
对 URL 内的各个值(例如查询参数值)使用encodeURIComponent,它对保留的所有内容进行编码。仅对您想要保持功能的整个 URL 使用encodeURI,因为它保留了结构字符,例如 / ? &=。
为什么我的 URL 中包含 %2520?
这就是双重编码:已经编码的字符串被再次编码,因此 %20 中的 % 变成了 %25。仅对原始文本进行编码,绝不对已编码的 URL 进行编码。如果不确定,请先解码,然后编码一次。
我应该将空格编码为 %20 还是 +?
%20 是标准并且适用于任何地方。 + 仅表示查询字符串形式数据中的空格,并且是 URL 路径中的文字加号。如有疑问,请使用 %20。