ToolConvoyToolConvoyv2.6
CODE

URL 编码 — 在浏览器中对 URL 特殊字符进行编码

对 URL 中的特殊字符、空格和非 ASCII 文本进行 URL 编码,安全用于 URL。兼容 RFC 3986,全程在浏览器中完成。无上传、无限制。

● 本地运行 · 在内存中编码页面加载以来工具发出的网络请求:0 次

百分号编码是仍在日常使用的最古老的编码标准。它在 1994 年由 RFC 1738 规定,2005 年由 RFC 3986 细化,此后规则再未改变:URL 中不允许出现的字符——空格、非 ASCII 文本、分隔符,以及为 URL 结构保留的字符——全部替换为 % 后跟两个十六进制数字。这套编码对网络如此基础,以至于每个浏览器、每个 HTTP 库、每个 Web 框架都会自动完成,而人们只有在自动化失败时才会想起它。自动化失败发生在工具编码过少(空格被作为字面量直接传给 fetch)、编码过多(路径里的 / 分隔符被编码),或用了错误的字符集(Latin-1 编码的查询值被发到 UTF-8 端点)时。

编码模式之间的选择——编码全部、仅编码查询字符串、仅编码路径组件——决定了输出能否正常工作。查询字符串模式编码 &=?,因为它们是分隔键值对的分隔符。路径组件模式编码 /:,因为它们是分隔路径段和协议声明的分隔符。默认的「编码所有特殊字符」最安全:它产出的字符串能在 URL 的任何位置存活。逐组件模式存在的原因是 URL 由组件组成,每个组件有各自的安全字符集。

最后的交接:如果编码后的字符串是查询参数值,把它和查询字符串解析器配合使用来组装完整 URL。如果编码后的字符串是 HTML 文档的一部分,对标签属性里的实体用 HTML 实体编码工具——URL 编码在 HTML 中只在 hrefsrc 属性内有效,不适用于一般内容。如果你要从各个部分拼装一个 URL,用 URL 解析器在上线前校验拼装结果。

广告

使用方法

  1. 输入或粘贴文本

    把字符串放入输入区。空格变为 `%20`,特殊字符变为百分号加两位十六进制,非 ASCII 文本按 UTF-8 字节序列编码。输出实时更新。

  2. 选择编码集合

    默认是「编码所有特殊字符」,最安全、最适合传输。切换到「仅编码查询字符串」用于参数值(编码 `&`、`=`、`?`,但保留 `/` 和 `:` 不动)。仅组件模式适合单个路径段。

  3. 复制编码后的 URL

    把编码后的字符串复制到剪贴板。输出可以直接粘贴到 URL 地址栏、`<a href>` 属性或 `fetch()` 调用中,无需再做转义。

常见问题

什么是百分号编码,它是如何工作的?

百分号编码(也叫 URL 编码)把不安全的字符替换为 `%` 后跟两个十六进制数字。空格变为 `%20`,& 符号变为 `%26`,欧元符号变为 `%E2%82%AC`(三个 UTF-8 字节)。这种编码由 RFC 3986 规定,是在 URL 中嵌入任意字节的唯一方式。

URL 编码是否意味着文本被加密或隐藏了?

不是。URL 编码是传输编码,不是加密。任何看到 `%48%65%6C%6C%6F` 的人都能用任意解码器还原成 'Hello'。它的目的是让字符串能安全通过 URL 解析器的传输,不是为了保密。

为什么默认情况下有些字符不被编码?

「非保留」集合中的字符(A-Z、a-z、0-9、`-`、`.`、`_`、`~`)在所有位置都是 URL 安全的,永远不需要编码。`/`、`?`、`#` 等字符在 URL 中具有结构含义,只在你想把它们当作字面字符而不是路径分隔符或查询分隔符时才编码。

工具如何处理中文或 Emoji 等非 ASCII 文本?

每个非 ASCII 字符先转成它的 UTF-8 字节序列,每个字节再单独做百分号编码。字符 字(U+5B57,三个 UTF-8 字节 E5 AD 97)变成 `%E5%AD%97`。这适用于任何 Unicode 字符,也是 RFC 3986 的要求。

限制说明

  • 不检测双重编码工具会编码你给它的任何文本。如果输入已经被部分编码(含 `%20`),`%` 自身会被编码成 `%25`,产生双重编码输出。如果你怀疑输入已经编码,先用 URL 解码工具解码一次。
  • 路径与查询的歧义工具不会把输入解析为 URL。它把整个输入当作单个字符串进行编码。如果你只需要编码 URL 的某些部分,请先用 URL 解析器把 URL 拆分成组件。
  • 不处理 Punycode 或 IDN国际化域名(IDN),例如 `münchen.de`,在 DNS 解析前必须转成 Punycode(`xn--mnchen-3ya.de`),但百分号编码和 Punycode 是两套不同的标准。工具只处理路径、查询和片段部分。

平台说明

macOS
终端等价命令:`python3 -c 'import urllib.parse; print(urllib.parse.quote("text"))'`。浏览器工具更适合从剪贴板或聊天中临时编码,无需打开终端。
Linux
命令行等价:`echo -n 'text' | python3 -c 'import urllib.parse,sys; print(urllib.parse.quote(sys.stdin.read()))'`。浏览器工具免去了带单引号或特殊字符字符串时的引号转义麻烦。
Windows
PowerShell 等价:`[System.Web.HttpUtility]::UrlEncode('text')`。在 PowerShell 访问受限的受限环境中,浏览器工具可以离线工作。
Web
完全在客户端运行。页面加载后即可离线工作。在开发或调试期间临时编码查询参数非常方便。
广告

相关工具

广告