在线URL编码/解码工具
工具介绍
URL编码(URL Encoding),也称为百分号编码(Percent-Encoding),是一种将URL中的特殊字符转换为%XX格式的编码方式。本工具支持在线URL编码和解码,提供encodeURI和encodeURIComponent两种模式,支持批量逐行处理。encodeURIComponent对几乎所有特殊字符编码,适合编码URL参数值;encodeURI保留URL结构字符,适合编码完整URL。所有操作均在浏览器本地完成,不上传服务器,安全可靠。
两种编码模式详解
| encodeURIComponent | 对URL组件编码,几乎所有特殊字符都被编码 hello world? → hello%20world%3F |
|---|---|
| encodeURI | 对完整URL编码,保留URL结构字符(;/?:@&=+$,#) http://a.com/b c → http://a.com/b%20c |
常见字符URL编码对照表
| 字符 | 原文 | 编码结果 |
|---|---|---|
| 空格 | %20 | |
| 感叹号 | ! | %21 |
| 双引号 | " | %22 |
| 井号 | # | %23 |
| 美元 | $ | %24 |
| 百分号 | % | %25 |
| &符号 | & | %26 |
| 单引号 | ' | %27 |
| 左括号 | ( | %28 |
| 右括号 | ) | %29 |
| 星号 | * | %2A |
| 加号 | + | %2B |
| 逗号 | , | %2C |
| 斜杠 | / | %2F |
| 冒号 | : | %3A |
| 分号 | ; | %3B |
| 小于号 | < | %3C |
| 等号 | = | %3D |
| 大于号 | > | %3E |
| 问号 | ? | %3F |
| @符号 | @ | %40 |
| 中文字 | 中 | %E4%B8%AD |
encodeURI vs encodeURIComponent
| 对比项 | encodeURIComponent | encodeURI |
|---|---|---|
| 编码范围 | 几乎所有特殊字符 | 保留URL结构字符 |
| 不编码字符数 | 约18个(字母数字+_-.!~*()') | 约34个(含;/?:@&=+$,#) |
| 主要用途 | URL参数值、表单数据 | 完整URL地址 |
| 对#的处理 | 编码为%23 | 保留为# |
| 对?的处理 | 编码为%3F | 保留为? |
| 对/的处理 | 编码为%2F | 保留为/ |
| 对&的处理 | 编码为%26 | 保留为& |
| 对=的处理 | 编码为%3D | 保留为= |
| 对空格的处理 | 编码为%20 | 编码为%20 |
使用步骤
使用技巧
常见问题
Q1: URL编码和URL解码有什么区别?
URL编码是将普通文本中的特殊字符转换为%XX格式的过程,使得文本可以安全地在URL中传输。URL解码是相反的过程,将%XX格式的编码还原为原始字符。例如,「你好」编码后变为「%E4%BD%A0%E5%A5%BD」,解码后还原为「你好」。编码用于发送数据前的处理,解码用于接收数据后的解析。
Q2: 为什么中文编码后会变成9个字符?
因为URL编码基于UTF-8编码,一个中文字符在UTF-8中占用3个字节,每个字节编码为%XX格式(3个字符),所以一个中文字符编码后变成9个字符(3字节 × 3字符/字节 = 9字符)。例如「你」的UTF-8字节是E4 BD A0,编码后就是%E4%BD%A0。emoji表情通常占用4个字节,编码后会变成12个字符。
Q3: 空格应该编码为%20还是+?
标准的URL编码(percent-encoding)中空格编码为%20。但在application/x-www-form-urlencoded格式(表单提交)中,空格也可以编码为+号。这是两种不同的约定:1) %20是RFC 3986标准的URL编码方式;2) +号是HTML表单的传统约定,仅用于查询字符串。JavaScript的encodeURIComponent将空格编码为%20。如果需要+号格式,可以手动替换。
Q4: 什么时候用encodeURI,什么时候用encodeURIComponent?
简单的判断方法:如果要编码的是完整的URL地址(包含协议、域名、路径、查询等),使用encodeURI,它会保留URL结构字符。如果要编码的是URL的一部分(如参数值、路径段、哈希值),使用encodeURIComponent,它会编码所有特殊字符,避免与URL结构冲突。最常见的错误是用encodeURI编码参数值,导致&、=等字符未被编码,破坏URL结构。
Q5: 解码失败怎么办?提示"URI malformed"是什么意思?
「URI malformed」(格式错误的URI)通常表示输入的编码内容格式不正确,常见原因有:1) %后面没有跟随两位有效的十六进制数字;2) 不完整的多字节UTF-8序列;3) 使用了错误的编码格式。检查方法:确保每个%后面都是两位十六进制数字(0-9, A-F),确保中文字符的UTF-8字节序列完整(3个%XX一组)。如果是从其他地方复制的编码,注意不要缺失字符。
Q6: 我的数据会被上传吗?
不会。本URL编解码工具所有计算全程在浏览器本地独立完成,使用浏览器内置的encodeURI/encodeURIComponent和decodeURI/decodeURIComponent API,无需联网操作,全程不产生网络传输。原始文本和编码结果都不会发送、记录或缓存到任何服务器,关闭页面后所有数据即刻清空。
应用场景
| 应用场景 | 说明 |
|---|---|
| URL参数编码 | 对URL查询参数的值进行编码,防止特殊字符破坏URL结构 |
| 表单数据提交 | 对表单数据进行URL编码,用于POST或GET请求 |
| 完整URL编码 | 对包含中文或特殊字符的完整URL进行编码 |
| 接口调试 | 调试API接口时对请求参数进行编码/解码 |
| 爬虫开发 | 构造合法的URL请求,解码响应中的编码内容 |
| 数据清洗 | 清洗和规范化URL编码的数据 |
| SEO优化 | 处理含中文的URL,确保搜索引擎正确识别 |
| 安全测试 | 测试URL注入、编码绕过等安全场景 |