URL编码器 / 解码器
即时编码和解码URL。支持encodeURIComponent和完整URI编码。100%客户端处理。
所有处理完全在您的浏览器中进行,不向任何服务器发送数据。
什么是URL编码(百分比编码)?
URL编码也称为百分比编码,将URL中不允许的字符转换为%符号后跟两位十六进制数字的格式。由RFC 3986定义,允许在URL中安全包含特殊字符、空格和非ASCII文本(如中文)。例如:空格变为%20,汉字「你」变为%E4%BD%A0。
应该使用哪种模式?
URL编码有两种模式。完整URI模式(encodeURI)在编码整个URL的同时保留://、?、&等URL结构字符,适用于安全传递完整URL的场景。组件模式(encodeURIComponent)用于编码单个参数值(如?q=搜索词),它会对包括结构字符在内的所有字符进行编码,因此对整个URL使用会破坏URL结构,浏览器将无法将其识别为有效地址。
encodeURIComponent 与 encodeURI 的区别
| 项目 | 组件 | 完整URI |
|---|---|---|
| 保留的字符 | A–Z a–z 0–9 - _ . ! ~ * ' ( ) | 上述字符 + URL结构字符 (: / ? # [ ] @ ! $ & ' ( ) * + , ; =) |
| 用途 | 查询参数值、表单数据 | 在保留URL结构的同时对整个URL进行编码 |
常见编码字符
| 字符 | 编码 | 说明 |
|---|---|---|
space | %20 | 在表单编码中也可写作 + |
& | %26 | 查询参数分隔符 |
= | %3D | 键=值分隔符 |
# | %23 | 片段标识符 |
+ | %2B | 加号(不是空格) |
/ | %2F | 路径分隔符 |
? | %3F | 查询起始字符 |
@ | %40 | 电子邮件、认证信息 |
常见问题
URL编码和百分比编码是一回事吗?
是的,它们是相同的。百分比编码是RFC 3986中定义的技术名称。每个不安全的字符被替换为%加上其UTF-8字节值的十六进制表示。
为什么中文URL编码后变得很长?
中文字符在UTF-8中占3个字节,每个字节编码为%XX,所以一个中文字符变成9个字符(如:你 → %E4%BD%A0)。
空格应该用%20还是+表示?
%20是RFC 3986标准的百分比编码。+用于HTML表单编码(application/x-www-form-urlencoded)。在URL中,%20更为可靠。
什么时候用组件模式,什么时候用完整URI模式?
编码单个查询参数值时使用组件模式(encodeURIComponent),对整个URL进行编码同时保留其结构(://、?、&等)时使用完整URI模式(encodeURI)。
什么是双重编码?
双重编码是对已经编码的字符串再次编码,例如%20变成%2520。这会导致URL无法正常工作,请确保输入未被预先编码。
浏览器可以直接显示中文URL吗?
现代浏览器会以人类可读的形式显示国际化URL,但实际的HTTP请求使用百分比编码形式。此工具显示网络上实际传输的内容。
我输入的数据会发送到服务器吗?
不会。所有编码和解码完全在您的浏览器中通过JavaScript执行,不向任何服务器传输数据。