什么是URL编码?

URL编码(百分号编码)使用%加十六进制代码将URL中的特殊字符转换为安全格式。了解URL编码的工作原理及其必要性。

Definition
URL Encoding(URL编码,百分号编码)

URL编码,也称为百分号编码,是一种将URL中的特殊字符替换为百分号(%)后跟该字符ASCII码十六进制表示的两位数字的机制。这是必要的,因为URL只能包含有限的ASCII字符集,且许多字符在URL语法中具有特殊含义。

URL编码的工作原理

通过查找字符的ASCII/Unicode值并转换为十六进制来进行编码: • 空格 → %20(ASCII 32 = 0x20) • : → %3A(ASCII 58 = 0x3A) • / → %2F(ASCII 47 = 0x2F) • @ → %40 • ? → %3F • # → %23 示例: https://example.com/search?q=你好 世界 变为: https://example.com/search?q=%E4%BD%A0%E5%A5%BD%20%E4%B8%96%E7%95%8C

保留字符 vs 非保留字符

URL字符分为两类: • 非保留字符 — 可直接使用:A~Z、a~z、0~9、-、_、.、~ • 保留字符 — 在URL中有特殊含义:: / ? # [ ] @ ! $ & ' ( ) * + , ; = 当保留字符作为数据(而非结构)使用时,必须进行百分号编码。例如,查询参数值中包含&时,必须编码为%26。

URL编码的实际应用

您随时都在接触URL编码: • 搜索查询:baidu.com/s?wd=什么是api(查询字符串中+也可表示空格) • 表单提交:浏览器在发送前自动编码表单数据 • 含空格的文件路径:/我的%20文档/文件.pdf • 非ASCII字符:中文汉字 → %E4%B8%AD%E6%96%87 • 含特殊字符的API调用参数

Try it yourself

文本编码/解码

关于URL编码

URL编码由RFC 3986定义。网络依靠它来安全传输包含URL不允许字符的数据。没有URL编码,包含空格、&符号或非拉丁字符的URL将变得模糊或无效。现代浏览器会自动处理编码,但开发人员在构建API和处理用户输入时必须了解它。

FAQ

为什么%20表示空格?
空格字符的ASCII码为32,十六进制为20。URL编码在十六进制值前加%,因此空格变为%20。
URL编码和Base64编码有什么区别?
URL编码使单个字符对URL安全,同时保持可读性。Base64编码使用64个可打印字符将二进制数据转换为文本格式。它们用途不同,输出也不同。
URL中的空格应该用+还是%20?
在URL的查询字符串(?key=value)中,+传统上也有效表示空格(表单编码)。在路径部分(/我的%20文件)中,必须使用%20。%20在任何地方都有效,使用更安全。

相关工具