全能工具 全能工具
暂无最近使用记录
暂无收藏工具

URL编码解码

关于URL编码

URL编码(也叫百分号编码)是互联网的一项基础协议规范。因为URL只允许使用ASCII字符集中的一部分字符,当网址里包含中文、空格、特殊符号等字符时,就必须把它们转换成%XX的格式才能在网络上正确传输,不然浏览器或服务器可能会解析出错。

本工具支持两种编码模式:encodeURIComponent会编码几乎所有特殊字符,适合处理URL参数值;encodeURI会保留冒号、斜杠、问号等URL结构字符,适合编码完整的网址。做接口调试、拼接带中文参数的链接、分析后台日志里的编码URL时都特别好用。

URL编码常识

为什么要编码
URL规范只允许ASCII字符的一个子集,中文、空格和特殊符号必须转换成%XX格式才能在网络上正确传输。
中文怎么编码的
中文字符先转成UTF-8字节序列,每个字节再用%加两位十六进制表示。比如"中"字编码后是%E4%B8%AD。
Component模式
encodeURIComponent编码所有特殊字符包括冒号斜杠等,专门用于处理URL的参数值部分。
URI模式
encodeURI保留冒号、斜杠、问号、井号等URL结构字符不编码,适合处理完整网址。
哪些字符是安全的
字母A-Z和a-z、数字0-9、以及横线(-)、下划线(_)、点(.)、波浪号(~)是URL安全字符无需编码。
空格的两种表示
空格在URL中可以编码为%20,也可以用加号(+)表示。路径里一般用%20,表单提交通常用加号。

常见字符编码对照

字符编码说明
空格%20+URL中最常遇到的转义字符
!%21感叹号
#%23井号,URL锚点标识符
%%25百分号自身也需要转义
&%26URL参数之间的分隔符
=%3DURL参数的赋值符号
?%3F查询字符串的起始标记
/ %2F路径分隔符

常见问题

encodeURI和encodeURIComponent有什么区别?
encodeURI用于编码完整URL,会保留URL结构字符(如://、/、?、#、&、=)。encodeURIComponent用于编码URL参数值,会编码所有特殊字符。参数值应该用encodeURIComponent。
为什么URL中的中文要编码?
URL规范规定只能包含ASCII字符。中文等非ASCII字符必须编码,否则可能在传输过程中被破坏。编码后的URL在任何系统和浏览器中都能正确传输和解析。
%20和+号作为空格有什么区别?
%20是RFC 3986标准的空格编码,用于URL路径;+号是application/x-www-form-urlencoded格式的空格编码,用于表单提交的查询字符串。现代推荐统一使用%20。
已经编码的URL再编码会怎样?
会产生双重编码问题。例如%20会变成%2520。解码时就需要多解码一次。在编码前应检查内容是否已经编码,避免重复编码导致的错误。
解码失败提示"URI malformed"是什么原因?
通常是因为输入的字符串不是有效的URL编码格式,比如%后面不是两位十六进制数,或者编码不完整。检查输入是否确实是URL编码后的内容。
前端发请求时参数需要手动编码吗?
使用现代API(如fetch、axios)时,URL参数通常会自动编码。但手动拼接URL字符串时需要用encodeURIComponent编码参数值,避免特殊字符破坏URL结构。
QR码扫出来的链接不对,或者中文乱码了怎么办?
生成含中文或特殊字符的QR码链接时,需要先对URL(尤其是参数部分)进行URL编码。因为QR码读取器对未编码的特殊字符解析可能出错,导致链接跳转失败或显示乱码。请使用URL编码工具处理后再生成QR码。

相关工具

本工具所有运算均在浏览器本地完成,输入内容不会上传到服务器。