js中url 传递参数(特殊字符)解决方法及转码解码

您所在的位置:网站首页 linux调用接口单引号不识别怎么解决 js中url 传递参数(特殊字符)解决方法及转码解码

js中url 传递参数(特殊字符)解决方法及转码解码

2023-08-01 11:14| 来源: 网络整理| 查看: 265

有些符号在URL中是不能直接传递的,如果要在URL中传递这些特殊符号,那么就要使用他们的编码了。下表中列出了一些URL特殊符号及编码 

十六进制值  1. + URL 中+号表示空格 %2B  2. 空格 URL中的空格可以用+号或者编码 %20  3. / 分隔目录和子目录 %2F  4. ? 分隔实际的 URL 和参数 %3F  5. % 指定特殊字符 %25  6. # 表示书签 %23  7. & URL 中指定的参数间的分隔符 %26  8. = URL 中指定参数的值 %3D 

解决的方法:  replace() 方法如果直接用str.replace("-","!") 只会替换第一个匹配的字符.  而str.replace(/\-/g,"!")则可以替换掉全部匹配的字符(g为全局标志)。  replace()  js中替换字符变量如下:  data2=data2.replace(/\%/g,"%25");  data2=data2.replace(/\#/g,"%23");  data2=data2.replace(/\&/g,"%26"); 

javascript中可用的编码解码函数,有如下的组合: 

encodeURI(string);  decodeURI(string);encodeURIComponent(string);  decodeURIComponent(string);

他们之间的区别为:

encodeURI/decodeURI:  以UTF-8编码编码字符串,对这些字符:“ ; , / ? : @ & = + $ ”不做编码。

encodeURIComponent/decodeURIComponent:  以UTF-8编码编码所有字符串。encodeURI和encodeURIComponent之前的区别用实例说明:  比如说要使用get方式将一个参数u,传递给服务器:

var  u="index.php?blogId=1&op=Default"; var  getURL="http://www.simplelife.cn/test.php?p="+encodeURI(u);

这里,如果使用了encodeURI,那么最终的getURL的值为: 

http://www.simplelife.cn/test.php?p=index.php?blogId=1&op=Default

这样,对参数u中的字符"&op=Default",将不会作为字符串参数传递到服务器端,而是当作test.php的参数传递过去了,因为对"&op=Default"中的字符"&"没有做编码。  所以,在这种应用场景下,就需要使用encodeURIComponent,编码后的getURL值为: 

http://www.simplelife.cn/test.php?p=index.php%3FblogId%3D1%26op%3DDefault

这样,参数就可以顺利传递过去了。在服务器端得到的字符串将是正确的u。  反之,如果需要通过get方式访问某一URL,但是URL中包含中文等字符,为了防止乱码等编码问题,需要将URL通过encodeURI进行编码。

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3