RFC3986 协议对 URL 的编解码问题做出了详细的建议,指出了哪些字符需要被编码才不会引起 URL 语义的转变,以及对为什么这些字符需要编码做出了相应的解释。
RFC3986 协议规定 URL 只允许包含以下四种字符:
1、英文字母(a-zA-Z)
2、数字(0-9)
3、-_.~ 4个特殊字符
4、所有保留字符,RFC3986 中指定了以下字符为保留字符(英文字符): ! * ' ( ) ; : @ & = + $ , / ? # [ ]
本工具使用了 JavaScript
的 decodeURIComponent
方法进行解码,encodeURI
和 encodeURIComponent
方法进行编码。
encodeURI
方法不会对ASCII字母、数字、~!@#$&*()=:/,;?+' 编码。encodeURIComponent
方法不会对ASCII字母、数字、~!*()' 编码。encodeURIComponent
比 encodeURI
编码的范围大。
因此当你需要编码整个 URL,就用 encodeURI
。
如果只需要编码 URL 中的参数时,就使用 encodeURIComponent
。