js对url进行编码解码的三种方案,JS在url中如何传递参数或特殊符号

发布时间 2023-10-14 09:39:57作者: 糖~豆豆

为什么要进行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'

今天就写到这里啦~

  • 小伙伴们,( ̄ω ̄( ̄ω ̄〃 ( ̄ω ̄〃)ゝ我们明天再见啦~~
  • 大家要天天开心哦

欢迎大家指出文章需要改正之处~
学无止境,合作共赢

在这里插入图片描述

欢迎路过的小哥哥小姐姐们提出更好的意见哇~~