OpenReplay Logo
12k
12k

URL 编码器/解码器

在浏览器中对 URL 和查询字符串进行百分号编码与解码——可选 encodeURIComponent 或 encodeURI,任何内容都不会离开你的设备。

本地处理

关于此工具

URL 编码(也称百分号编码)会把在 URL 中具有特殊含义或不被允许的字符替换为一个百分号加上其十六进制字节值——空格变成 %20,& 符号变成 %26,依此类推。JavaScript 提供了两种方式:encodeURIComponent 几乎会转义所有字符,包括 &、=、? 和 / 这类保留分隔符,因此适合用于单个值,例如某个查询字符串参数;而 encodeURI 会保留完整 URL 的结构性字符,让地址依然可用。

用它把一个值安全地放入查询字符串,调试一个特殊字符或 Unicode 被破坏的链接,或读出一个已编码的重定向或跟踪 URL 实际包含的内容。切换到 Decode 即可把 %20 之类的字符还原成可读文本,根据字符串的生成方式选择 Component 或 Full URL 范围,并在解码表单式查询字符串(其中空格以加号发送)时启用“+ as space”选项。

encodeURIComponent 会转义保留分隔符 &、=、? 和 /,而 encodeURI 会保留它们——单个值用 Component,仅在处理完整地址时才用 Full URL。

常见问题

encodeURIComponent 和 encodeURI 有什么区别?

encodeURIComponent 会转义 &、=、? 和 / 等保留 URL 字符,因此适用于单个值,例如某个查询字符串参数。encodeURI 会保留这些结构性字符,因此用于编码完整 URL 而不破坏它。

为什么 + 在 URL 中有时表示空格?

在 application/x-www-form-urlencoded 查询字符串中(HTML 表单提交数据的方式),空格被编码为 + 而非 %20。标准 URL 解码器不会把 + 还原成空格,因此在解码表单式查询字符串时请启用“+ as space”选项。

解码时出现“Malformed percent-encoding”是什么意思?

这表示输入中包含一个 % 后面没有跟两个有效的十六进制数字,或存在不完整的多字节序列,例如 %E0%A4%A。解码器无法解释这些字节,因此会报告错误,而不是返回部分损坏的文本。