Tarayıcınız güncel değil

Bu siteyi görüntülemek için tarayıcınızın veya cihazınızın işletim sisteminin güncellenmesi gerekiyor.

Your browser is out of date. Please update iOS or your browser to view this site.

跳转到主要内容
Gizke.com
博客

URL 编码器与解析器

在你的设备上运行,不会发送任何内容。
转义每一个保留字符。适用于查询字符串或路径片段中的单个值。

结果将显示在这里

对 URL 和查询字符串进行编码或解码,或将完整的 URL 解析为各个部分,并在实时表格中编辑查询字符串——全部在浏览器中完成。

URL 只能安全地包含有限的一组 ASCII 字符——其他任何字符,例如空格、& 符号或非拉丁字母,都必须先编码为 %XX 形式的百分号编码,才能在其中传输。此工具按照浏览器所使用的相同规则对文本进行编码和解码,并可单独将完整的 URL 解析为协议、主机、端口、路径、查询字符串和哈希,让您可以在表格中编辑查询参数,并实时查看 URL 的重建过程。一切均在您的浏览器本地运行——任何内容都不会被上传。

常见问题

什么是百分号编码?
百分号编码(也称为 URL 编码)用 % 加上两位十六进制值来替换字符,并针对该字符 UTF-8 表示中的每个字节重复此过程。正因如此,URL 才能携带空格(%20)、& 符号(%26)或表情符号,而不会与 URL 自身的语法混淆。
encodeURIComponent 与 encodeURI 有什么区别?
encodeURIComponent 会转义除少数非保留字符外的所有字符,因此适合用于单个值——比如一个查询参数或路径片段——因为它也会转义 & 和 = 等原本会被解读为 URL 结构的字符。encodeURI 则用于整个 URL:它会保留 :、/、?、& 和 # 等结构字符不变,以确保 URL 仍能正常工作,只转义 URL 中确实不能出现的字符,例如空格。将整个 URL 传入 encodeURIComponent 会破坏该 URL,因为斜杠和冒号也会被转义。
还应该使用 escape() 和 unescape() 吗?
不应该。这两个函数早在引入 encodeURIComponent 的那一版 JavaScript 标准中就已被弃用,因为 escape() 不会按照 HTTP 和现代 URL 所期望的方式编码非 ASCII 字符——对于 Latin-1 之外的所有字符,它使用一种非标准的 %uXXXX 形式,decodeURIComponent 无法将其正确解析回来。此工具保留该选项,仅供您查看旧系统产生的输出。
为什么查询字符串中的 + 会变成空格?
查询字符串历来源自 HTML 表单提交,其使用的是 application/x-www-form-urlencoded 格式:它用 + 而非 %20 来编码真正的空格,而此工具的解析器(以及 JavaScript 的 URLSearchParams)在解码时会将两者都视为空格。如果某个值确实需要一个字面上的加号,则必须将其本身编码为 %2B。
像 ?tag=a&tag=b 这样重复的参数会怎样处理?
不会丢失任何内容——此工具会按顺序保留每一次出现,作为查询参数表格中独立的一行,这与大多数服务器框架将重复的键收集为一个列表的方式相同。编辑或删除某一行不会影响其他行。
为什么解析器会为我的 URL 假定 https://?
像 example.com/path 这样的字符串没有协议,因此无论是浏览器还是此工具,都无法判断它究竟是一个网址、用于其他协议,还是纯文本。解析器不会直接拒绝它,而是假定使用 https://,以便您仍然可以查看和编辑它——每次发生这种情况都会出现提示,如果实际想使用的是其他协议,您可以在协议字段中进行更正。

分享此工具

博客关于联系我们使用条款隐私政策