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–Z、a–z、0–9 和 - _ . ~ 之外的所有保留字符。encodeURI() 用于整个 URL,保留结构分隔符 : / ? # [ ] @ ! $ & ' ( ) * + , ; = 不变,使 URL 保持可用。
经验法则是:为放入查询字符串、路径段或表单字段的每个值使用 encodeURIComponent()。仅当编码一个完整的、已有结构的 URL 并希望保持其语法不变时,才使用 encodeURI()。本工具使用 encodeURIComponent(),因为最常见的实际任务是编码单个值而非整个 URL。
常见的 URL 编码字符
熟悉最常见的编码形式可以加快调试格式错误的 URL。下表列出了实践中最常被编码的字符。
| 字符 | 编码 | 原因 |
|---|---|---|
| 空格 | %20 | URL 中不允许空格 |
| & | %26 | 分隔查询参数 |
| = | %3D | 分隔键和值 |
| ? | %3F | 标记查询字符串开始 |
| # | %23 | 标记片段开始 |
| / | %2F | 路径分隔符 |
| + | %2B | 在表单数据中解码为空格 |
| % | %25 | 转义字符本身 |
注意,在 application/x-www-form-urlencoded 负载(HTML 表单提交)中,空格编码为 + 而非 %20。两种形式在 URL 中都有效,但 %20 是规范的百分号编码。
如何编码 URL
使用本工具编码文本只需一秒,完全在浏览器内完成。无需上传、无需注册、无需安装。工具使用 JavaScript 原生的 encodeURIComponent() 函数。请按以下步骤操作:
- 粘贴文本。 在输入框中输入或粘贴任意字符串——ASCII、Unicode、符号,甚至多行文本。
- 点击"编码"。 工具对输入运行
encodeURIComponent(),实时将百分号编码结果写入输出框。 - 复制结果。 点击"复制到剪贴板"复制编码后的字符串,然后粘贴到你的 URL、API 请求或代码中。
- 如需解码。 要反向操作,请使用配套的 URL 解码器工具。
由于每一步都使用 JavaScript 在浏览器中本地运行,你的文本永远不会上传到服务器。这使得编码完全私密、快速,适合处理令牌、密钥和个人数据等敏感内容。
这个 URL 编码器免费吗?
是的,完全免费,无需注册、无水印、无限制。
它编码哪些字符?
使用 encodeURIComponent() 编码除 A–Z a–z 0–9 - _ . ~ 之外的所有字符。
支持 Unicode 吗?
支持。非 ASCII 字符按其 UTF-8 字节序列编码,每个字节前加 %。
%20 和 + 有什么区别?
两者都表示空格。%20 是规范的百分号编码;+ 用于表单提交(application/x-www-form-urlencoded)。
我的输入会被上传吗?
不会。所有处理都在本地完成,文本永远不会离开你的浏览器。