URL编码解码器 - 编码URL和查询字符串

为URL和查询字符串进行百分号编码,或将编码后的URL解码为可读文本——全程在浏览器中完成。

选择模式,粘贴文本并点击转换。组件编码适合查询字符串值,完整URL编码可保持整个地址有效,解码则还原任何百分号编码字符串。

URL编码解码器 - 编码URL和查询字符串
为URL和查询字符串进行百分号编码,或将编码后的URL解码为可读文本——全程在浏览器中完成。

编码每个保留字符,包括& = ? /和#。用于查询字符串中的单个值或路径段。

工作原理:非非保留字符集中的字符会替换为以%XX十六进制对表示的UTF-8字节;组件编码使用encodeURIComponent,完整URL编码使用encodeURI,解码使用decodeURIComponent。

关于URL编码器和解码器

URL只能安全地传输有限字符集。每个网址背后的规范RFC 3986定义了一个小型非保留字符集——字母、数字以及四个符号- _ . ~——它们可以出现在任何位置;同时还定义了具有结构含义的保留字符集,如? & = /和#。其他所有字符,从普通空格到重音字母或中日韩字符,都必须进行百分号编码:字符会转换为UTF-8字节,每个字节写成百分号后跟两位十六进制数字。这个URL编码器和解码器可双向即时完成转换,而且完全在浏览器内部运行,因此你粘贴的内容不会发送到服务器。 该工具提供三种模式,因为JavaScript本身区分两种编码任务。组件编码封装encodeURIComponent,会转义每个保留字符。当你构建URL的一部分——搜索词、重定向目标、令牌,或查询字符串等号后的任何值——应选择它。如果值中包含&或=,直接保留会把参数拆成两部分;编码后即可保持值完整。 完整URL编码封装encodeURI,适用于已经具有结构的完整地址。它会转义空格、引号、尖括号和非ASCII字符,但有意保留: / ? & = #,让协议、主机、路径和查询继续表达原有含义。若对整个URL使用组件编码器,斜杠和问号也会被转义,地址结构将无法正常工作。 解码通过decodeURIComponent反向处理,将%20还原为空格、%26还原为与号,并将%C3%BC等多字节序列还原为字母ü。解码是阅读长跟踪链接、检查OAuth重定向或调试表单实际提交内容的最快方式。如果输入包含未跟随两位十六进制数字的孤立%,工具会报告清晰错误,而不是返回乱码。 常见用途包括准备API调用的查询参数、修复含空格的失效链接、将URL嵌入其他URL,以及理清多层嵌套的重定向链。请注意:百分号编码是传输语法,不是安全机制。编码字符串可以轻易还原,绝不能把它当作隐藏内容,并且始终要在服务器端验证解码后的输入。

URL编码示例

了解三种模式如何处理保留字符、空格和非ASCII文本。

输入输出说明
price=1+2(组件编码)price%3D1%2B2=和+在查询字符串中属于保留字符,因此组件编码器会将它们转为%3D和%2B。
https://example.com/my files/report 2024.pdf(完整URL编码)https://example.com/my%20files/report%202024.pdf空格变为%20,而协议和斜杠保持不变。
na%C3%AFve(解码)naïve两字节UTF-8序列%C3%AF会解码回单个字母ï。
50% off(组件编码)50%25%20off字面百分号本身必须编码为%25,否则解码器会误读其后的内容。

如何编码或解码URL

  1. 选择模式:单个值使用组件编码,完整地址使用完整URL编码,或选择解码来还原编码。
  2. 将文本或URL粘贴到输入框。
  3. 点击转换——结果会立即显示在输出框中。
  4. 将输出复制到需要的位置,或点击清除重新开始。

URL编码器和解码器常见问题

encodeURIComponent和encodeURI有什么区别?
encodeURIComponent会转义每个保留字符,包括/ ? & =和#,因此用于查询参数等单个值。encodeURI会保留这些结构字符,只转义任何位置都不安全的字符,因此用于完整URL。工具中的组件编码和完整URL编码分别对应这两个函数。
为什么空格会变成%20而不是+?
%20是URL中空格的标准百分号编码。+来自较早的application/x-www-form-urlencoded格式,用于HTML表单,并且只适用于查询字符串。本工具始终输出%20;解码时+会保留为字面加号,因此解码表单数据前请先将+替换为%20。
为什么解码时会出错?
遇到后面没有两个有效十六进制数字的%,decodeURIComponent会抛出错误——例如折扣文字中的字面百分号,或在序列中途被截断的字符串。解码前请确认输入确实经过百分号编码且内容完整。
重音符号、中日韩文字或表情等非ASCII字符如何编码?
字符首先转换为UTF-8字节序列,然后每个字节写成%XX。带重音的字母通常变成两组转义序列,表情则变成四组。解码会重新组合字节并按UTF-8解释,准确恢复原字符。
应该用组件编码来编码整个URL吗?
不应该。组件编码器会转义构成URL结构的冒号、斜杠和问号,从而破坏地址。完整URL请使用完整URL编码,组件编码只用于插入其中的单个值。
我粘贴的内容会发送到服务器吗?
不会。转换完全在浏览器中运行,使用JavaScript内置的encodeURIComponent、encodeURI和decodeURIComponent函数,因此包含令牌、会话ID或私密路径的URL不会离开你的设备。