开发者工具

URL 编码

对文本进行百分号编码,使其在 URL 中安全可用。

给这个工具评分

如何使用 URL 编码

  1. 输入或粘贴你的文本。
  2. 复制编码后的 URL 输出。

关于 URL 编码

百分号编码用于让 URL 携带那些原本会破坏其结构或改变其含义的字符。每个不安全的字节都会被写成 % 加两位十六进制数字——空格变成 %20,与号变成 %26。此工具采用组件编码:它将你的输入视为即将放入 URL 中的单个值,而不是一个完整的 URL 本身。

这个区别比听起来更重要。组件编码同样会转义保留分隔符——&=?#/: 都会被编码——因为在参数值内部,这些字符绝不能被误认为是结构符号。所以这里应粘贴单个值,而不是整个地址:完整的 URL 经过编码后,其中的 :// 和斜杠也会被转义,这通常不是你想要的结果。字母、数字以及少数几个安全符号——- _ . ! ~ * ' ( )——保持不变。非 ASCII 文本会先转换为 UTF-8 字节,因此一个带重音符号的字母会变成两个转义序列。

有一个经典陷阱值得特别提醒:空格会被编码为 %20,但查询字符串历来也会把 + 当作空格来读取,这一惯例源自 HTML 表单提交。两者并存,而只认识其中一种的解码器就会出错。使用 URL 解码工具进行反向操作,或用 URL 解析工具将整个地址拆分成各个部分。一切都在你的浏览器本地完成。

常见问题

我可以粘贴整个 URL 吗?

可以,但结果不会是一个可用的 URL——其中的 ://、斜杠和 ? 都会被转义,因为该工具会把你的输入编码为单个值。只编码你要插入的参数值,让 URL 的其余结构保持原样。

空格应该编码成 %20 还是 +?

本工具始终生成 %20,它在 URL 中的任何位置都是有效的。+ 这种约定只在查询字符串和表单编码的内容中表示空格,是另一套历史惯例。如果对方系统需要 +,可以在编码之后自行替换 %20——但仅限于查询字符串部分。

哪些字符不会被编码?

字母、数字,以及符号 - _ . ! ~ * ' ( )。其余所有字符,包括保留分隔符 & = ? # / 和 :,都会被百分号编码。这正是让输出可以安全地放入参数值中的原因。

为什么一个字符变成了好几个 % 转义序列?

因为百分号编码作用于字节而非字符,而文本会先按 UTF-8 编码。像 é 这样的字符占两个字节,因此会变成 %C3%A9。表情符号占四个字节,会变成四个转义序列。

如果对已经编码过的文本再次编码会怎样?

你会得到双重编码:% 本身也是需要转义的字符,所以 %20 会变成 %2520。这是一个常见的错误,通常发生在某个值被两层各自编码一次的情况下。请只编码一次。