← 返回工具列表
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 的语法,并指明哪些字符是保留的或非保留的,这正是正确编码的基础。