🔗 在线URL编解码工具

广告位 - 顶部 (728×90)

输入文本

快捷键: Ctrl+Enter 编码 | Ctrl+Shift+D 解码 | Ctrl+Shift+S 交换

结果

结果将显示在这里...
广告位 - 中部 (728×90)

URL 编码知识

什么是 URL 编码?

URL 编码(又称百分号编码,Percent-Encoding)是一种将 URL 中的特殊字符转换为 %XX 格式的机制,其中 XX 是字符 ASCII/UTF-8 字节的十六进制表示。URL 标准定义于 RFC 3986,规定 URL 中只能包含 ASCII 字母、数字及少数保留字符,其余字符必须进行编码。

什么时候需要 URL 编码?

encodeURI vs encodeURIComponent 区别

JavaScript 提供两个 URL 编码函数,核心区别在于对保留字符的处理:

encodeURI:编码整个 URL,保留 URL 结构字符 ; , / ? : @ & = + $ #,适用于编码完整的 URL 地址。

encodeURIComponent:编码 URL 的某个部分(如参数值),编码所有保留字符,确保参数值中的特殊字符不会破坏 URL 结构。

简单记法:编码整个 URL 用 encodeURI,编码参数值用 encodeURIComponent

URL 编码保留字符表

字符类型字符encodeURIencodeURIComponent
字母数字A-Z a-z 0-9保留保留
非保留符号- _ . ! ~ * ' ( )保留保留
URL 结构字符; , / ? : @ & = + $ #保留编码为 %XX
空格(空格)编码为 %20编码为 %20
中文字符中文编码为 %XX编码为 %XX
其他特殊字符< > " { } | \ ^ `编码为 %XX编码为 %XX

常见使用场景

使用教程

本URL编解码工具支持encodeURI、encodeURIComponent和批量处理,以下是详细的使用方法:

编码操作:在输入框中粘贴需要编码的URL或文本内容。工具默认使用encodeURIComponent模式,它会编码所有特殊字符(包括/?#&=等)。如果你需要编码完整的URL(保留协议和路径结构),切换到encodeURI模式,该模式会保留URL的结构分隔符。

解码操作:将已编码的URL粘贴到输入框中,工具会自动识别并执行解码。如果输入包含未编码的普通文本,工具会提示无需解码。解码结果会显示在下方结果区域,你可以直接复制或进行下一轮操作。

批量模式:勾选「批量模式」后,工具会对输入框中的每一行分别进行编解码处理。每行被视为一个独立的URL或文本片段。这在处理大量URL列表(如从日志文件中提取的URL集合)时非常有用。空行会被保留,某行解码失败不会影响其他行的处理结果。

应用场景

URL编码是Web开发中无法避免的基础操作,以下是几个高频使用场景:

API参数传递:在调用RESTful API时,查询参数(Query String)中的中文、空格和特殊符号必须进行URL编码。例如搜索关键词「人工智能」需要编码为%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD后作为参数传递。本工具可以帮助开发者快速验证编码结果是否正确。

URL重定向与分享:在实现「登录后重定向到原页面」功能时,目标URL需要作为另一个URL的参数值传递。此时必须使用encodeURIComponent对整个目标URL进行编码,否则URL中的&=会被误解为当前URL的参数分隔符。

邮件和文档中的链接:在HTML邮件、Markdown文档或Word中插入包含中文的URL时,部分老旧客户端可能无法正确识别未编码的URL。提前进行URL编码可以确保链接在所有环境下都能正常跳转。同样,mailto链接中的主题和正文参数也需要编码。

扩展知识

百分号编码规范:URL编码的官方名称为「Percent-Encoding」,定义在RFC 3986中。它使用%XX格式表示一个ASCII字节,其中XX为该字节的十六进制值。对于非ASCII字符(如中文),先按UTF-8编码为多字节序列,再对每个字节进行百分号编码。例如「中」字的UTF-8编码为E4 B8 AD,URL编码后为%E4%B8%AD

保留字符与非保留字符:根据RFC 3986,URL中的字符分为保留字符(如:/?#[]@!$&'()*+,;=)和非保留字符(如A-Za-z0-9-_.~)。encodeURI仅编码保留字符中那些在特定位置可能引起歧义的字符,而encodeURIComponent会编码所有保留字符。理解这一区别是正确使用两者的关键。

常见误区与注意事项:很多开发者会重复编码或遗漏编码。重复编码会导致%被再次编码为%25,造成服务器端解码失败。另外,URL的「#」符号用于标识片段(Fragment),在编码整个URL时应避免被编码,否则会导致页面定位失效。encodeURI正是为此而设计。

URL 编码后长度会增加多少?

每个被编码的字符会变为 3 个字符(如空格变为 %20)。中文字符在 UTF-8 下通常占 3 字节,编码后变为 9 个字符(如"中"变为 %E4%B8%AD)。因此含中文或特殊字符较多的 URL 编码后长度会显著增加。

encodeURI 和 encodeURIComponent 应该选哪个?

如果编码整个 URL(含协议、域名、路径),使用 encodeURI,它会保留 :/?#&= 等分隔符。如果编码 URL 中的某个参数值或片段,使用 encodeURIComponent,它会编码所有特殊字符,避免参数值中的特殊字符破坏 URL 结构。

URL 编码支持中文吗?

支持。JavaScript 的 encodeURIencodeURIComponent 会自动将中文字符按 UTF-8 编码后转为百分号编码。例如"你好"会被编码为 %E4%BD%A0%E5%A5%BD。本工具完整支持中文、Emoji 及所有 Unicode 字符。

空格被编码成什么?%20 和 + 有什么区别?

encodeURIencodeURIComponent 将空格编码为 %20。在 application/x-www-form-urlencoded 格式(如表单提交)中,空格会被编码为 +。本工具使用标准的 %20 编码。如需 + 号编码,可自行替换。

批量模式如何使用?

勾选"批量模式"后,工具会对输入框中的每一行分别进行编解码,每行一个 URL。空行会被保留。如果某行解码失败,会显示错误提示而不影响其他行。

URL 编码是加密吗?安全吗?

不是。URL 编码是编码方案,不是加密。任何人都可以解码,不提供任何安全性。它的目的是确保 URL 中的特殊字符能被正确传输和解析,而非保护数据安全。如需安全传输,请使用 HTTPS 或真正的加密算法。

广告位 - 底部 (728×90)