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 — 正确编码
常见编码对照表
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。