URL 编码与解码
选择编码或解码以及方式,结果会随输入实时出现。解码失败时它会说明原因而不是只提示格式错误,会提醒重复编码,还能把完整链接拆成协议、主机、路径和已解码的查询参数。
链接的组成部分
粘贴完整链接,或形如 ?a=1&b=two 的查询字符串,就能看到它被拆开。
转换在当前标签页用浏览器自带的 encodeURIComponent 和 decodeURIComponent 完成,不会发送或保存任何内容。
使用方法
- 选择「编码」或「解码」,再选方式:「组件」(encodeURIComponent)用于单个参数值,「完整网址」(encodeURI)保留 : / ? # & =,「表单」把空格变成 +。
- 把文本或链接粘贴到左侧框中,右侧结果实时更新;点击「载入示例」可以看到含中文的链接。
- 查看状态行:它会说明转换了多少个转义,并在输入已是编码状态、或结果仍含重复编码残留时给出提醒。
- 在「链接的组成部分」中查看协议、主机、已解码的路径和查询参数表,再「复制结果」,或点击「把结果作为输入」继续下一步。
常见问题
encodeURIComponent 和 encodeURI 有什么区别?
encodeURIComponent 会转义除字母、数字和 - _ . ! ~ * ' ( ) 之外的一切,包括 : / ? # & =,所以适合放进查询字符串的单个值。encodeURI 保留这些分隔符,适合只需要转义空格和非 ASCII 字符的完整地址。对含有 & 或 = 的值使用 encodeURI,会悄悄破坏整个查询参数。
为什么解码会报格式错误?
要么是某个 % 后面不是两位十六进制数字,要么转义出的字节不是合法的 UTF-8——常见于用 GBK 等其他字符集编码的文本。工具会告诉你出错的位置以及属于哪一种。打开「保留无效序列」可以解码其余部分,并把坏的部分保持原样。
空格什么时候用 %20,什么时候用 +?
网址路径里一律用 %20。用 + 表示空格只属于表单编码的查询字符串(application/x-www-form-urlencoded),所以构造或读取这种格式时请选「表单」。表单模式解码时也会把 + 还原成空格,其他模式会保留字面的 +。