编码解码哈希加密格式化时间转换开发生成文本处理网络工具其他工具
首页 / 名词解释 / URL 编码

URL 编码

URL 编码(又称百分号编码、percent-encoding、urlencode)是一种把 URL 中不能直接出现的字符转换成安全形式的机制。规则很简单:将字符对应的字节写成 % 加两位十六进制,例如空格变成 %20,中文「你」的 UTF-8 字节被编码为 %E4%BD%A0。这样任意文本都能放进 URL 而不破坏其结构。

需要编码的主要是两类字符:一是保留字符(在 URL 里有特殊语义),二是非 ASCII 字符。几个要点:

常见误区是对整条 URL 无差别编码。以 JavaScript 为例,encodeURI 会保留 / ? & 等结构字符,适合处理完整 URL;而 encodeURIComponent 会连它们一起编码,只适合编码单个参数值。用错会导致链接损坏或参数解析出错。

常见问题

encodeURI 和 encodeURIComponent 有什么区别?
encodeURI 用于整条 URL,会保留 : / ? # & = 等结构字符;encodeURIComponent 用于单个参数值,会把这些字符也一并编码。拼接查询参数时应该用后者,否则 & 或 = 会破坏参数结构。
空格该编码成 %20 还是 +?
取决于场景。URL 路径和标准百分号编码里空格是 %20;而 application/x-www-form-urlencoded 表单数据里空格是 +。两者别混用,否则解码时 + 可能被错误还原成空格。
中文等非 ASCII 字符怎么编码?
现代规范是先把字符按 UTF-8 编成字节序列,再对每个字节做百分号编码,所以一个中文通常变成三段 %XX。解码时也必须按 UTF-8 还原,字符集用错就会出现乱码。

相关工具

相关名词