首页 URL 编码器

URL 编码器

使用百分号编码将任意文本转换为安全的 URL 字符串——100% 在浏览器中完成,无需上传。

输入

输出

什么是 URL 编码?

URL 编码(又称百分号编码)是表示 URL 中不允许或不安全字符的标准化方法。URL 只能包含有限的 ASCII 字符——字母、数字以及少数保留符号(如 -_.~),其他任何字符都必须编码为百分号后跟两位十六进制数字,表示该字节的值。例如,空格变成 %20,& 变成 %26,中文字符"你"在 UTF-8 中变成 %E4%BD%A0

URL 编码最初于 1994 年在 RFC 1738 中正式定义,目前由 RFC 3986 规范。它使浏览器、Web 服务器和 HTTP 客户端能够无歧义地交换包含 Unicode 字符、空格、标点符号和保留符号的数据。每种现代编程语言都内置了 URL 编码器,本工具使用的 JavaScript 函数是 encodeURIComponent()

何时需要 URL 编码

当需要将文本数据放入 URL 时——最常见于查询字符串、路径段、片段标识符、表单数据或 HTTP 头部——就需要 URL 编码。常见场景包括:

  • 查询参数。 当在 URL 后附加 ?name=John Doe&city=New York 时,空格和特殊字符必须百分号编码为 ?name=John%20Doe&city=New%20York
  • API 请求。 REST 和 GraphQL API 期望 URL 中的值是编码的;未编码的 / 可能被误解为路径分隔符。
  • 邮件和消息链接。 Mailto 链接、分享 URL 和深度链接必须编码主题、正文和参数值。
  • 非 ASCII 文本。 中文、日文、韩文、阿拉伯文和 emoji 字符必须以 UTF-8 百分号编码才能安全地包含在 URL 中。
  • OAuth 和 SSO 回调。 状态令牌、重定向 URI 和代码挑战以编码的查询参数传输。
  • 分析追踪。 包含空格、& 或重音字母的 UTM 参数必须编码才能在传输中保持完整。

忘记编码某个值可能会破坏 URL、将部分数据泄露到错误的参数,或触发严格服务器的 400 Bad Request 响应。

encodeURIComponent 与 encodeURI 的区别

JavaScript 提供了两个相关的编码函数,选错是常见的 bug 来源。encodeURIComponent() 用于单个参数值,会编码除 A–Za–z0–9- _ . ~ 之外的所有保留字符。encodeURI() 用于整个 URL,保留结构分隔符 : / ? # [ ] @ ! $ & ' ( ) * + , ; = 不变,使 URL 保持可用。

经验法则是:为放入查询字符串、路径段或表单字段的每个值使用 encodeURIComponent()。仅当编码一个完整的、已有结构的 URL 并希望保持其语法不变时,才使用 encodeURI()。本工具使用 encodeURIComponent(),因为最常见的实际任务是编码单个值而非整个 URL。

常见的 URL 编码字符

熟悉最常见的编码形式可以加快调试格式错误的 URL。下表列出了实践中最常被编码的字符。

字符编码原因
空格%20URL 中不允许空格
&%26分隔查询参数
=%3D分隔键和值
?%3F标记查询字符串开始
#%23标记片段开始
/%2F路径分隔符
+%2B在表单数据中解码为空格
%%25转义字符本身

注意,在 application/x-www-form-urlencoded 负载(HTML 表单提交)中,空格编码为 + 而非 %20。两种形式在 URL 中都有效,但 %20 是规范的百分号编码。

如何编码 URL

使用本工具编码文本只需一秒,完全在浏览器内完成。无需上传、无需注册、无需安装。工具使用 JavaScript 原生的 encodeURIComponent() 函数。请按以下步骤操作:

  1. 粘贴文本。 在输入框中输入或粘贴任意字符串——ASCII、Unicode、符号,甚至多行文本。
  2. 点击"编码"。 工具对输入运行 encodeURIComponent(),实时将百分号编码结果写入输出框。
  3. 复制结果。 点击"复制到剪贴板"复制编码后的字符串,然后粘贴到你的 URL、API 请求或代码中。
  4. 如需解码。 要反向操作,请使用配套的 URL 解码器工具。

由于每一步都使用 JavaScript 在浏览器中本地运行,你的文本永远不会上传到服务器。这使得编码完全私密、快速,适合处理令牌、密钥和个人数据等敏感内容。

这个 URL 编码器免费吗?

是的,完全免费,无需注册、无水印、无限制。

它编码哪些字符?

使用 encodeURIComponent() 编码除 A–Z a–z 0–9 - _ . ~ 之外的所有字符。

支持 Unicode 吗?

支持。非 ASCII 字符按其 UTF-8 字节序列编码,每个字节前加 %

%20 和 + 有什么区别?

两者都表示空格。%20 是规范的百分号编码;+ 用于表单提交(application/x-www-form-urlencoded)。

我的输入会被上传吗?

不会。所有处理都在本地完成,文本永远不会离开你的浏览器。