有关a href传参的汉语错码难题

日期:2021-03-20 类型:科技新闻 

关键词:商城网站建设,微商好助手,微商引流,电商网站模板,微信商家小程序

当必须href开展传参,主要参数为汉语时,会出現错码难题,最简易的方式是:

传入的值最先用escape()开展数据加密,随后在赋值网页页面用unescape()解密,亲测合理。

在网上查了1下也有用urlencode开展数据加密,urldecode解密。

额...那这二者有啥差别呢,顺手查阅梳理了1下,来源于(http://www.cnblogs.com/glory-jzx/archive/2013/06/14/3135580.html):

js对文本开展编号涉及到3个涵数:escape,encodeURI,encodeURIComponent,相应3个解码涵数:unescape,decodeURI,decodeURIComponent 

1、 传送主要参数时必须应用encodeURIComponent,这样组成的url才不容易被#等独特标识符断开。                            
  比如:<script language="javascript">document.write('<a href="http://passport.baidu.com/?logout&aid=7&u= +encodeURIComponent("http://cang.baidu.com/bruce42")+">撤出< /a>');</script> 

>2、 开展url自动跳转时能够总体应用encodeURI 
  比如:Location.href=encodeURI("http://cang.baidu.com/do/s?word=百度搜索&ct=21"); 

3、 js应用数据信息时可使用escape 
  比如:搜藏中history记录。 

4、 escape对0⑵55之外的unicode值开展编号时輸出%u****文件格式,其它状况下escape,encodeURI,encodeURIComponent编号結果同样。 

5、 数最多应用的应为encodeURIComponent,它是将汉语、韩文等独特标识符变换成utf⑻文件格式的url编号,因此假如给后台管理传送主要参数必须应用encodeURIComponent时必须后台管理解码对utf⑻适用(form中的编号方法和当今网页页面编号方法同样) 

6、 不编号:

escape不编号标识符有69个:*,+,-,.,/,@,_,0⑼,a-z,A-Z 

  encodeURI不编号标识符有82个:!,#,$,&,',(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0⑼,a-z,A-Z 

  encodeURIComponent不编号标识符有71个:!, ',(,),*,-,.,_,~,0⑼,a-z,A-Z 

【escape()  encodeURI() 差别?】

escape() 方式: 
  全部空格、标点标记、重音标识符,和任何等他非ASCII标识符都编号改成"%XX"的方式,xx是16进制数据所意味着. 
escape和unescape的编号调解码作用, escape回到16进制编号的1种ISO拉丁标识符集. unescape的作用将具备独特值的16进制编号变换为ASCII标识符串 
举例: 
escape('!@#$%^&*(){}[]=:/;?+\'"'): 
結果:%21@%23%24%25%5E%26*%28%29%7B%7D%5B%5D%三d%3A/%3B%3F+%27%22 

encodeURI() 方式 
    Encodeuri方式回到1个编号后的URI. 因而,假如你将其結果用Decodeuri方式,初始的串会回到. Encodeuri的方式其实不对下列标识符编号:":"、"/"、"; "、"? ". 但可使用 encodeuricomponent 的方式对这些标识符开展encode. 
    encodes,1种 Uniform Resource Identifier (URI)(URI)逐1更换一些标识符,叙述为UTF⑻编号的特性. 
    比如 : 
    encodeURI('!@#$%^&*(){}[]=:/;?+\'"'): 
    結果:!@#$%25%5E&*()%7B%7D%5B%5D=:/;?+'%22 

encodeURIComponent() 方式: 
encodeuricomponent 方式回到1个编号的URI. 因而,假如你将decodeuricomponent,原先的串会回到. 因为全部文本encodesencodeuricomponent方式都会开展编号,因此要当心,假如存在相对路径等串比如: "/FOLDER1/FOLDER2/DEFAULT.HTML". 数据加密后其实不会,假如做为1个互联网服务器的恳求可能无效. 应用这类方式Encodeuri当标识符串超出1个以上URI构成. 
事例:最简易的方式便是看它们数据加密这些标识符后转化成的编码. 
encodeURIComponent('!@#$%^&*(){}[]=:/;?+\'"'): 
結果 !%40%23%24%25%5E%26*()%7B%7D%5B%5D%三d%3A%2F%3B%3F%2B'%22 

【何时合适用甚么方式?】 

escape() 方式不容易数据加密 + 在服务器端会被分析为空格和在表单forms地区中的spaces.根据这样的缩减方法,你应当尽量的防止应用这类方式,2选1的话,最好是的常常应用 encodeURIComponent(). 

escape() 不容易数据加密: @*/+ 

应用encodeURI()  比 escape() 稍技术专业化,它是对于URIs编号的 .1个作为querystring的背面, 属于URL的1个一部分.应用这类方式是当你必须将1个标识符串变换为URIs資源标志和必须一些标识符维持非encode情况.请记牢, 这个' 标识符是不容易开展编号的,由于它自身就包含在URIs里. 

encodeURI()不容易数据加密: !@#$&*()=:/;?+' 

最终, encodeURIComponent() 方式用在大多数数cases中,当你必须对1个独立URIs构件开展编号,这类方式能够数据加密一些独特用于的URIs的标识符,因而绝大多数构件能够包括在里边. 记牢, ' 标识符自身就包含在URIs里,因此不容易此方式不容易对其开展编号. 

encodeURIComponent() 不容易数据加密: !*()'
http://shijian0306.javaeye.com/blog/241264

网编只用过escape,so起参照功效

以上这篇有关a href传参的汉语错码难题便是网编共享给大伙儿的所有內容了,期待能给大伙儿1个参照,也期待大伙儿多多适用脚本制作之家。

原文详细地址:http://www.cnblogs.com/zhangym118/archive/2016/07/05/5644915.html