URL 编解码
编码 / 解码 URL 字符串
在线URL编解码工具
免费在线URL编码解码工具。支持encodeURIComponent和encodeURI两种模式,一键编解码中文URL、查询参数、特殊字符。
双模式编解码
Component模式编码所有特殊字符,适合查询参数。Full URI模式保留URL结构字符(:/?#等),适合完整网址。
智能检测
自动识别输入内容是否已编码,点击示例自动切换编码/解码模式。支持一键交换输入输出反向操作。
完全本地处理
使用浏览器原生encodeURI/decodeURI API,所有操作在本地完成。数据不会发送至任何服务器。
URL编码标准与格式
了解URL编码的标准规范与实现细节。
百分号编码
Percent-Encoding
将非ASCII字符和保留字符转换为 %XX 格式。其中XX是字符的UTF-8字节值的十六进制表示。如"你"编码为 %E4%BD%A0。
encodeURIComponent
RFC 3986
编码除了 A-Z a-z 0-9 - _ . ! ~ * ' ( ) 之外的所有字符。适合编码查询参数值、表单数据、Cookie值等。
encodeURI
RFC 2396
保留URL结构字符(: / ? # [ ] @ ! $ & ' ( ) * + , ; =),只编码非ASCII字符。适合编码完整URL。
UTF-8编码
多字节字符
现代浏览器统一使用UTF-8对URL进行编码。一个中文字符占用3个UTF-8字节,因此会产生3个%XX编码。早期某些系统使用GBK编码,已逐渐淘汰。
空格编码
+ 或 %20
application/x-www-form-urlencoded格式将空格编码为 +,而标准百分号编码为 %20。encodeURIComponent生成%20,URLSearchParams生成+。
IRI国际化
RFC 3987
国际化资源标识符允许URL中直接使用Unicode字符。现代浏览器地址栏显示解码后的中文,但实际传输时仍使用编码格式。
应用场景
中文URL处理
处理包含中文的网址、文件名、路径。确保中文内容在URL中安全传输。
API开发
构建和解析RESTful API的查询参数。确保参数值中的特殊字符被正确编码。
SEO与链接
URL编码确保链接在所有浏览器和社交平台上正确分享和解析。
安全防护
正确的URL编码可防止XSS注入攻击。确保用户输入在URL中被安全处理。
URL编码专业知识
为什么需要URL编码
URL规范(RFC 3986)只允许ASCII字符集的一个子集。空格、中文、特殊符号等必须编码后才能安全地包含在URL中,否则可能导致URL解析错误或安全问题。
Component vs URI
encodeURIComponent编码所有特殊字符包括 / ? & = 等,适合编码参数值。encodeURI保留这些URL结构字符,适合编码完整URL。混用会导致双重编码或编码不足。
双重编码问题
对已编码的字符串再次编码会产生双重编码:%25E4%25BD%25A0(原始:%E4%BD%A0)。这是Web开发中常见的bug。解码时可能需要多次解码才能得到原文。
URL安全字符
不需要编码的字符包括:A-Z a-z 0-9 以及 - _ . ~ (非保留字符)。其他所有字符在用作查询参数时都应该被编码,以避免解析歧义。
常见问题
Q.encodeURIComponent和encodeURI有什么区别?
encodeURIComponent编码所有特殊字符(包括 / ? & =),适合编码URL查询参数的值。encodeURI保留URL结构字符,适合编码完整URL。举例:编码"a=1&b=2"作为参数值时用Component,编码整个网址时用URI。
Q.为什么中文URL看起来是乱码?
中文字符不属于URL安全字符,必须编码为%XX格式。每个中文字符占用3个UTF-8字节,因此会产生3个%XX编码,看起来很长。浏览器地址栏会显示解码后的中文,但复制时得到的是编码后的格式。
Q.什么是双重编码?怎么解决?
对已编码的字符串再次编码就是双重编码。例如 %20 被编码为 %2520。解决方法:1) 检查编码逻辑是否重复执行;2) 解码时多次调用直到结果不再变化;3) 编码前先解码一次。
Q.URL编解码安全吗?数据会泄露吗?
完全安全。本工具使用浏览器原生encodeURI/decodeURI API,所有操作在本地完成。您的URL和数据不会发送到任何服务器。即使断网也能正常使用。