js对url进行编码解码的三种方案,JS在url中如何传递参数或特殊符号
为什么要进行url编码?
当你的URL里出现%2F 怎么办?JS在url中如何传递参数或者特殊符号呢?在url链接中会经常碰到一些%2F、%2B等特殊符号怎么解决呢?下面我们来了解一下:
- 根据RFC标准,有些符号在URI中是不能直接传递的,要按照规定格式进行编码
- 编码格式:%加字符的ASCII码,即一个百分号%,后面加上对应字符的ASCII(16进制)码值。举个栗子:空格的编码值是"%20"。
url特殊符号及编码.
+ URL 中+号表示空格 %2B
空格 URL中的空格可以用+号或者编码 %20
/ 分隔目录和子目录 %2F
? 分隔实际的 URL 和参数 %3F
% 指定特殊字符 %25
# 表示书签 %23
& URL 中指定的参数间的分隔符 %26
= URL 中指定参数的值 %3D
怎么进行url编码和解码?
1. escape 和 unescape (不太常用)
注意事项
特别注意事项:escape不编码字符有69个:*,+,-,.,/,@,_,0-9,a-z,A-Z。
使用介绍
- escape()不能直接用于URL编码,真正作用是返回一个字符的Unicode编码值。
- escape()函数用于js对字符串进行编码
- 采用unicode字符集对指定的字符串除0-255以外进行编码。
- 所有的空格符、标点符号、特殊字符以及更多有联系非ASCII字符都将被转化成%xx格式的字符编码(xx等于该字符在字符集表里面的编码的16进制数字)。
- 比如,空格符对应的编码是%20。
使用案例
var url = "http://localhost:8080/xiaojin?state=11&name=xiaojin&other=开心";
escape(url)
'http%3A//localhost%3A8080/xiaojin%3Fstate%3D11%26name%3Dxiaojin%26other%3D%u5F00%u5FC3'
2. encodeURI 和 decodeURI (不太常用)
注意事项
==特别注意事项: encodeURI不编码字符有82个:!,#,$,&,',(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-Z ==
使用介绍
把URI字符串采用UTF-8编码格式转化成escape各式的字符串。
encodeURI()一般用于整个url编码
使用案例
var url = "http://localhost:8080/xiaojin?state=11&name=xiaojin&other=开心";
encodeURI(url)
'http://localhost:8080/xiaojin?state=11&name=xiaojin&other=%E5%BC%80%E5%BF%83'
3. encodeURIComponent 和 decodeURIComponent (常用)
注意事项
==特别注意事项: 这个比较好用哦,因为"; / ? : @ & = + $ , #",这些统统会被编码。 ==
使用介绍
- 我一般用这个搞参数传递
- 它用于对URL的组成部分进行个别编码,而不用于对整个URL进行编码。
- 采用UTF-8编码格式转化成escape格式的字符串。
- 参数包含特殊字符可能会造成间断。
使用案例
var url = "http://localhost:8080/xiaojin?state=11&name=xiaojin&other=开心";
encodeURIComponent(url)
'http%3A%2F%2Flocalhost%3A8080%2Fxiaojin%3Fstate%3D11%26name%3Dxiaojin%26other%3D%E5%BC%80%E5%BF%83'
今天就写到这里啦~
- 小伙伴们,( ̄ω ̄( ̄ω ̄〃 ( ̄ω ̄〃)ゝ我们明天再见啦~~
- 大家要天天开心哦
欢迎大家指出文章需要改正之处~
学无止境,合作共赢