#01
什么是 URL 百分号编码?
URL 百分号编码(Percent-Encoding)定义于 RFC 3986。URL 规范只允许字母、数字以及少量标点符号在其中直接出现;其他字符必须被"转义"为一个百分号 % 加上两位十六进制数字。
例如,中文"土豆"会被编码为 %E5%9C%9F%E8%B1%86,空格 " " 会被编码为 %20(有时为了兼容旧规范写作 +)。这样做的目的是让任意信息都可以在一个仅支持 ASCII 的网络中稳定传输。
使用 我们的工具 时,只需在输入框粘贴或输入文本,选择"编码"或"解码",然后点击"执行"即可完成转换。
#02
encodeURI 与 encodeURIComponent 的区别与选择
浏览器原生提供了两个最常用的编码函数,但它们的使用场景完全不同,这里列出它们的区别:
- encodeURI:用于编码整个 URL。它不会编码具有特殊语义的字符,例如 : / ? # [ ] @ ! $ & ' ( ) * + , ; = - . _ ~。因此可以用于将一段包含非 ASCII 字符的完整地址转换为可传输的 URL。
- encodeURIComponent:用于编码单个参数或路径片段。它会编码所有"保留字符",使得编码后的片段可以安全地放入查询参数、路径或 hash 中。这是后端接口开发时最常用的函数——也是本工具默认采用的实现。
一个常见的反模式是"整段 URL 调用 encodeURIComponent 后再拼到 href 上":这会把冒号与正斜杠也编码为 %3A、%2F,导致地址失效。正确做法是:仅对参数值使用 encodeURIComponent,而不是整个 URL。
#03
数据安全与隐私说明
URL 中的查询参数、路径片段经常包含敏感信息(如内部接口地址、用户 ID、重定向目标等)。一旦发送到第三方服务器,它们可能被日志记录并泄露。
本工具的核心设计原则是"纯前端运行"。所有编码与解码操作都在您的浏览器本地完成——不会向任何服务器发送输入内容或输出结果,也不会在任何地方保存或缓存。断开网络后依然可以正常使用。
对于含有高度敏感信息的 URL(例如内网 API、含 token 的地址),建议在离线或受控环境中使用,或在粘贴前先手动脱敏关键字段,确保最小原则。