返回工具列表

URL 编码/解码器

基于 RFC 3986 规范对 URL 路径与查询参数进行安全编码或解码。

使用指南与常见问题

URL 编码(Percent-Encoding 百分号编码)是统一资源定位符(URL)规范中规定的用于对特殊字符进行转义的机制。

为什么要进行 URL 编码?

URL 路径和参数中只允许包含标准 ASCII 字符集。非 ASCII 字符(如中文或 Emoji)或在 URL 中代表特定意义的保留字符(如 ?、&、=)如果直接书写,可能会导致服务器端解析出错,因此需要转换成 %XX 的格式。

什么是 RFC 3986 规范?

RFC 3986 是定义统一资源定位符(URI)的官方规范。通常情况下,JavaScript 自带的 encodeURIComponent 并不对 !'()* 字符进行转义。但在开启 RFC 3986 模式后,我们会将其强制转码,确保在各种老旧的服务器或 API Gateway 上都能绝对安全传输。

常见问题解答

问:URL 里哪些字符必须编码?
答:具有语法含义的保留字符(比如查询和片段标记),当它们出现在值里时必须编码,非 ASCII 文本和空格也同样需要。

问:encodeURI 和 encodeURIComponent 有什么区别?
答:encodeURI 保留保留字符不变,而 encodeURIComponent 连它们也一并编码。对单个查询参数的值,要用后者。

问:为什么把空格编码成 %20 而不是加号?
答:%20 是通用形式。加号专用于表单编码的查询字符串,在那里它代表空格。

问:我做 URL 编解码时会把它上传吗?
答:不会。编码和解码 100% 在本地进行,地址从不会离开你的浏览器。

问:什么是 RFC 3986?
答:它是 IETF 标准,定义了 URI 的语法,并指明哪些字符是保留的或非保留的,这正是正确编码的基础。