开发者

URL Encoder / Decoder

空格、符号和特殊字符会破坏 URL — 百分号编码可解决此问题。对任何 URL 进行编码以安全传输,或将其解码回可读文本,即时完成。

这个计算器对您有帮助吗?

什么是URL Encoder / Decoder?

URL编码器/解码器是一种必不可少的Web开发工具,用于在普通文本和URL安全的百分比编码格式之间进行转换。当URL包含空格、特殊符号或非ASCII字符(如重音字母和表情符号)时,如果未正确编码就会损坏。该工具提供即时编码和解码,完全支持URL模式(编码完整URL)和组件模式(编码单个查询参数值),以及用于同时处理多个字符串的批处理模式。它处理RFC 3986中定义的所有标准百分比编码操作,将不安全字符转换为其%XX十六进制表示形式,反之亦然。是Web开发人员、API集成人员、SEO专家以及任何处理查询字符串、重定向或基于URL的数据传输的人的必备工具。完全在浏览器中运行,无需服务器调用,快速且私密。支持JavaScript的所有标准正则表达式功能,包括字符类、量词、锚点、捕获组、前瞻和后瞻断言以及Unicode匹配。

何时使用此计算器

  • 您正在构建包含空格、符号或非 ASCII 字符的查询参数的 URL
  • 您需要解码百分号编码的 URL 以读取其实际内容
  • 您正在调试因未编码的特殊字符而拒绝您的 URL 的 API
  • 您正在处理需要在使用前清理的用户提交的 URL
  • 您需要同时批量编码或解码多个 URL 段
  • 您正在构建必须正确编码参数的重定向或回调 URL

步骤:

  1. 输入或粘贴要编码或解码的文本/URL。
  2. 选择编码或解码模式。
  3. 单击转换按钮。
  4. 复制结果以在您的应用程序中使用。

公式

编码:不安全字符 → % + 2 位十六进制代码 ➡ 解码:%XX → 原始字符

使用场景

  • 为 URL 构建安全的查询字符串
  • 处理 API 请求参数
  • 调试已编码的 URL
  • 创建 URL 友好的别名和路径

主要优势

  • 实时结果的即时编码和解码
  • 支持URL模式和组件模式以适应不同上下文
  • 批处理模式用于同时编码或解码多个字符串
  • 处理所有特殊字符包括Unicode和表情符号
  • 100%基于浏览器 — 不向服务器发送任何数据
  • 可视字符计数,用于验证编码没有重复或截断输入

专业提示

  • 在将用户生成的URL参数包含到URL中之前,始终对其进行编码
  • 在JavaScript中,使用encodeURIComponent()编码单个查询参数值
  • 在向用户显示之前解码URL以提高可读性
  • 注意双重编码:如果看到%25后面跟着更多十六进制数字,URL可能已被编码两次
  • 构建查询字符串时使用组件模式,编码整个URL路径或完整URL时使用URL模式

需要避免的常见错误

  • 通过编码已编码的URL进行双重编码,将%20转换为%2520
  • 使用错误的编码上下文 — URL模式和组件模式对相同输入产生不同输出
  • 忘记+仅在application/x-www-form-urlencoded数据中代表空格
  • 未正确处理非ASCII字符——在百分号编码之前始终确保UTF-8编码

关键术语解释

百分比编码:在URL中编码字符的标准机制,用%后跟两位十六进制ASCII代码替换不安全字符
查询字符串:URL中?字符之后的部分,包含用&分隔的键值对
保留字符:如:, /, ?, #, [, ], @, !, $, &, (, ), *, +, ,, ;, = — 根据RFC 3986在URL语法中具有特殊含义
组件模式与URL模式:组件模式编码更多字符,用于单个值;URL模式保留URL结构,用于完整路径

相关概念

  • 百分号编码:用 % 后跟两位十六进制 ASCII 代码替换不安全字符以实现安全 URL 传输的机制
  • 查询字符串:URL 中 ? 字符之后的部分,包含由 & 字符分隔的键值对
  • 保留字符:根据 RFC 3986,在 URL 语法中具有特殊含义的字符,如 :、/、?、#、[、]、@、!、$、&、(、)、*、+、,、;、=
  • URL 安全字符:URL 中无需编码的非保留字符(字母、数字、-、_、.、~)
  • encodeURIComponent 与 encodeURI:JavaScript 函数,其中 encodeURIComponent 对单个值编码除字母、数字和 _*-.~ 之外的所有内容,而 encodeURI 保留完整 URL 的结构字符。

示例

编码 "Hello World & Friends!" → "Hello%20World%20%26%20Friends%21"。解码 "search%3Fq%3Dhello+world" → "search?q=hello world"。

解读您的结果

编码器将不安全的 URL 字符(空格、&、?、#、非 ASCII 等)转换为百分号编码格式,其中每个字符变为 % 加两位十六进制代码。解码器逆转此过程,恢复原始可读文本。字符数有助于你验证编码是否意外重复或截断了你的输入。 组件模式编码更广泛的字符集,专为编码单个查询参数值而设计。URL 模式对要编码的内容更严格,专为编码完整 URL 路径或整个 URL 而设计。构建查询字符串时使用组件模式,编码完整 URL 时使用 URL 模式。 批量模式允许你一次编码或解码多行,当你有要处理的 URL 或参数列表时非常有用。每行都被视为单独的输入,所有结果一起显示,方便复制。

常见问题

为什么 URL 需要编码?
URL 只能包含某些 ASCII 字符。空格、&、?、# 等字符以及非 ASCII 字符必须进行编码(百分号编码),以确保在互联网上安全传输。
什么是百分号编码?
百分号编码会用 % 符号加上两位十六进制代码来替换不安全字符。例如,空格变成 %20,& 变成 %26。
URL 编码和 HTML 编码一样吗?
不一样。URL 编码(百分号编码)用于 URL。HTML 编码使用 &amp; 表示 &、&lt; 表示 < 等实体。它们在 Web 开发中的用途不同。
我应该什么时候使用 URL 模式而不是组件模式?
编码单个查询参数值(例如搜索词)时使用组件模式。编码完整 URL 路径或需要整个字符串对 URL 安全时使用 URL 模式。组件模式会编码更多字符,因为它假定该值将被放置到 URL 结构内部。
为什么编码 'Hello World' 得到的是 'Hello%20World' 而不是 'Hello+World'?
在 URL 路径段中,空格编码为 %20。空格使用 + 编码仅用于 application/x-www-form-urlencoded 数据(HTML 表单提交)。现代最佳实践是在 URL 中一致使用 %20。本计算器对 URL 编码使用 %20。
我可以编码表情符号或带重音字母等非 ASCII 字符吗?
可以。非 ASCII 字符首先转换为 UTF-8 字节,然后每个字节进行百分号编码。例如,表情符号 ☺ (U+1F600) 变成 %F0%9F%98%80。é (U+00E9) 等带重音字符变成 %C3%A9。这是 RFC 3986 中定义的标准方法。
这和 HTML 实体编码有什么区别?
URL 编码(百分号编码)用于 URL — 它将字符转换为 %XX 十六进制代码。HTML 实体编码将字符转换为命名或数字实体,如 &amp; 表示 & 或 &#8364; 表示 €。它们服务于完全不同的目的,不能互换使用。
为什么有些 URL 即使包含特殊字符也能在没有编码的情况下正常工作?
现代浏览器会在你导航到 URL 或提交表单时自动编码 URL。但是,当你以编程方式构建 URL(在代码、API 调用或服务器端重定向中)时,你必须手动编码,因为服务器不会替你完成。
有双重编码的风险吗?
有。如果你对已编码的 URL 再次编码,%20 会变成 %2520,这是不正确的。在再次编码之前,始终检查你的输入是否已经过编码。本计算器会显示解码后的输出,以便你验证结果是否正确。
如何在 JavaScript 中处理已编码的 URL?
使用 decodeURIComponent() 进行解码,使用 encodeURIComponent() 对单个值进行编码。对于完整 URL,使用 decodeURI() 和 encodeURI(),它们会保留 URL 结构字符(/、?、# 等)。切勿使用 escape() 或 unescape() — 它们已废弃,且无法正确处理 Unicode。

发现更多工具

精选于全站工具库的新发现。