URL 编解码
对 URL 中的特殊字符进行编码,或解码百分号编码的 URL 字符串。Web 开发和 API 工作必备工具。
使用方法
- 在输入区域输入或粘贴文本或 URL
- 点击「编码」对特殊字符进行百分号编码,或点击「解码」转换回来
- 复制结果用于您的应用程序
常见问题
-
什么是 URL 编码?
URL 编码(也称百分号编码)将特殊字符替换为百分号后跟其十六进制值。例如,空格变为 %20。
-
什么时候需要 URL 编码?
在 URL 参数、查询字符串或将通过 HTTP 发送的表单数据中包含特殊字符时需要进行 URL 编码。
-
encodeURI 和 encodeURIComponent 有什么区别?
encodeURI 编码完整的 URI,保留 :、/ 和 ? 等字符。encodeURIComponent 编码除字母、数字和少数特殊字符外的所有内容,适合编码单个参数值。
-
支持 Unicode 字符吗?
支持。Unicode 字符会先编码为 UTF-8 字节,然后每个字节进行百分号编码。
URL 编码的由来
URL(统一资源定位符)的规范规定,地址中只允许出现 ASCII 字母、数字以及少数几个特殊字符(-、_、.、~)。其他字符,包括空格、中文、&、=、? 等,都必须经过编码才能安全地出现在 URL 中。这种编码方式叫做百分号编码(Percent-Encoding)。
编码规则很简单:将字符转换为 UTF-8 字节,然后每个字节用 % 加两位十六进制数表示。例如,空格变为 %20,中文字"你"变为 %E4%BD%A0(三个字节)。
encodeURI 与 encodeURIComponent 的区别
这是 JavaScript 开发中一个经典的混淆点:
encodeURI 设计用来编码整个 URL,它会保留 URL 结构字符不编码,包括 :, //, ?, =, &, # 等。如果你的字符串是一个完整 URL,用这个函数。
encodeURIComponent 设计用来编码 URL 中的单个参数值,它会对几乎所有非字母数字字符进行编码,包括 ?、=、&。如果你要把一个值塞进查询参数里,必须用这个函数。
举个例子:
原始值:name=张三&city=北京
encodeURIComponent → name%3D%E5%BC%A0%E4%B8%89%26city%3D%E5%8C%97%E4%BA%AC
如果漏了编码直接拼接到 URL 里,& 会被解析为参数分隔符,导致参数解析错误。
常见使用场景
- 搜索引擎查询:搜索"北京天气"时,浏览器会自动将请求 URL 编码为
q=%E5%8C%97%E4%BA%AC%E5%A4%A9%E6%B0%94 - 表单提交:HTML 表单以
application/x-www-form-urlencoded方式提交时,数据字段经过 URL 编码 - API 调用:构建包含特殊字符的 REST API 请求时,参数值需要手动编码
- 分享链接:将带参数的页面链接分享出去前,确保特殊字符已编码,避免链接断裂
使用本工具可以快速验证编码结果,排查因编码遗漏或重复编码(double encoding)导致的 bug。