encodeURI 和 encodeURIComponent
文章类型:Javascript
发布者:hp
发布时间:2025-05-13
encodeURI 和 encodeURIComponent 是 JavaScript 中用于对 URI(统一资源标识符)进行编码的两个方法,那么,他们有什么不同呢?
(1)encodeURI
定义:=>用于对整个 URI 进行编码,保留 URI 的合法结构(如协议、域名、路径等)
场景:=>编码完整的 URL,但确保特殊符号(如 /, :, ?, # 等)不被转义
范围:=>A-Z a-z 0-9 ; , / ? : @ & = + $ - _ . ! ~ * ' ( ) #
(2)encodeURIComponent
定义:=>用于对 URI 的组成部分(如查询参数、哈希值等)进行编码,确保这些部分不会破坏 URI 的结构
场景:=>编码 URL 的片段(如参数值),转义所有可能干扰 URI 结构的字符
范围:=>A-Z a-z 0-9 - _ . ! ~ * ' ( )
1:encodeURI
encodeURI("http://example.com/测试?name=张三&age=20");
// 输出:http://example.com/%E6%B5%8B%E8%AF%95?name=%E5%BC%A0%E4%B8%89&age=20
// 保留协议、路径分隔符(/)和查询符号(?&)等。
2:encodeURIComponent
encodeURIComponent("name=张三&age=20");
// 输出:name%3D%E5%BC%A0%E4%B8%89%26age%3D20
// 转义了 `=` 为 `%3D`,`&` 为 `%26`。
字符 | encodeURI | encodeURIComponent |
---|---|---|
空格 | %20 | %20 |
/ | 保留 | %2F |
? | 保留 | %3F |
: | 保留 | %3A |
= | 保留 | %3D |
& | 保留 | %26 |
1:encodeURI=>需要保留 URL 的整体结构时
2:encodeURIComponent=>需要将动态值嵌入 URL 的某个部分(如查询参数)时
1:encodeURI=>decodeURI
2:encodeURIComponent=>decodeURIComponent
1:encodeURI:处理完整 URL,保留合法结构。
2:encodeURIComponent:处理 URL 片段(如参数),确保不破坏结构