← 返回博客

URL编码是什么?为什么链接里有%20?

2026年2月 · 阅读时间 4分钟

你一定见过这样的链接:https://example.com/search?q=%E4%BD%A0%E5%A5%BD。那些%开头的字符是什么?为什么不能直接写中文?

什么是URL编码?

URL编码(也叫百分号编码/Percent-encoding)是将URL中的特殊字符转换为 %XX 格式的过程,其中XX是字符的十六进制ASCII/UTF-8值。

空格 → %20

你好 → %E4%BD%A0%E5%A5%BD

hello world → hello%20world

为什么需要URL编码?

URL只能包含ASCII字符的一个子集。以下字符在URL中有特殊含义:

?查询字符串开始
&参数分隔符
=键值对分隔
#锚点/片段标识
/路径分隔符
空格不允许出现在URL中

如果参数值中包含这些字符,不编码就会破坏URL结构。比如搜索"C++ & Java":

❌ ?q=C++ & Java — 浏览器会把&当成参数分隔符

✅ ?q=C%2B%2B%20%26%20Java — 正确编码

常见编码对照表

字符编码说明
空格%20 或 +最常见!%21感叹号#%23井号&%26和号+%2B加号=%3D等号?%3F问号@%40at符号/%2F斜杠

JavaScript中的URL编码

// 编码整个URI组件(推荐)

encodeURIComponent("你好 world")

// "%E4%BD%A0%E5%A5%BD%20world"

// 编码整个URI(保留 :/?#[]@ 等)

encodeURI("https://example.com/你好")

// "https://example.com/%E4%BD%A0%E5%A5%BD"

⚠️ encodeURI vs encodeURIComponent 的区别:

encodeURI — 编码整个URL,保留URL结构字符

encodeURIComponent — 编码参数值,所有特殊字符都编码

一般用 encodeURIComponent 编码参数值更安全。

在线工具

需要快速编解码URL?试试我们的 免费URL编解码工具,粘贴文本一键编码或解码。

更多开发者工具请访问 www.cyunyun.com