RUNWEBTOOLS
简体中文
数据格式与编码

URL 编码讲解

更新 2026-07-06

复制一个带搜索词的 URL,你常会在本该是空格或带重音字母的地方看到 %20%C3%A9 之类的东西。那就是 URL 编码在起作用。本指南讲解它做什么、为何需要,以及哪些字符会被转义。

URL 编码是什么

URL 编码 —— 也叫 百分号编码(percent-encoding) —— 是在 URL 中表示那些否则会不安全或有歧义的字符的一种方式。每个这样的字符会被替换成一个 % 后跟其十六进制字节值。空格变成 %20;&符号变成 %26

为何需要

URL 只能包含有限的一套字符,其中一些还有特殊职责:? 开启查询字符串,& 分隔参数,/ 分隔路径段,# 标记片段。如果你要放进 URL 的值含有其中之一,就必须编码它,让它被当作数据而非结构。

Search term:  cats & dogs
In a URL:     ?q=cats%20%26%20dogs

不编码的话,原始的 & 会被读成一个新参数的开始,搜索就会出错。

保留字符 vs. 非保留字符

  • 非保留(Unreserved) 字符 —— 字母、数字,以及 - _ . ~ —— 总是安全,永不需要编码。
  • 保留(Reserved) 字符 —— 像 ? & / # : @ = —— 具有特殊含义,作为字面数据使用时必须编码。
  • 其他一切 —— 空格、带重音字母、表情符号和大多数符号 —— 依据其 UTF-8 字节编码,这正是一个字符可能变成好几个 %xx 对的原因。

一个常见的混淆:加号

在表单提交的查询字符串里,空格有时被编码成 + 而非 %20。视语境两者都可能表示“空格”,这会绊倒人 —— 拿不准时,%20 总是安全的。

URL 编码 vs. Base64

这两者解决不同的问题。URL 编码让文本能安全地放 在 URL 里面Base64二进制 数据能安全地穿过基于文本的通道。它们有时会合起来用(Base64URL),但并不可互换。

要编码或解码一个值,用 URL 编码器;要拆开查询字符串里的所有参数,查询字符串解析器 会把它们分成一个可读的列表。

更多 数据格式与编码

查看全部 数据格式与编码 指南 →

本指南提到的工具