亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

關(guān)于a href傳參的中文亂碼問(wèn)題

  發(fā)布時(shí)間:2016-07-06 08:46:28   作者:佚名   我要評(píng)論
下面小編就為大家?guī)?lái)一篇關(guān)于a href傳參的中文亂碼問(wèn)題。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

當(dāng)需要href進(jìn)行傳參,參數(shù)為中文時(shí),會(huì)出現(xiàn)亂碼問(wèn)題,最簡(jiǎn)單的方法是:

傳入的值首先用escape()進(jìn)行加密,然后在取值頁(yè)面用unescape()解密,親測(cè)有效。

網(wǎng)上查了一下還有用urlencode進(jìn)行加密,urldecode解密。

額...那這兩者有啥區(qū)別呢,隨手查閱整理了一下,來(lái)源(http://www.cnblogs.com/glory-jzx/archive/2013/06/14/3135580.html):

js對(duì)文字進(jìn)行編碼涉及3個(gè)函數(shù):escape,encodeURI,encodeURIComponent,相應(yīng)3個(gè)解碼函數(shù):unescape,decodeURI,decodeURIComponent 

1、 傳遞參數(shù)時(shí)需要使用encodeURIComponent,這樣組合的url才不會(huì)被#等特殊字符截?cái)唷?/span>                            
  例如:<script language="javascript">document.write('<a href="http://passport.baidu.com/?logout&aid=7&u= +encodeURIComponent("http://cang.baidu.com/bruce42")+">退出< /a>');</script> 

>2、 進(jìn)行url跳轉(zhuǎn)時(shí)可以整體使用encodeURI 
  例如:Location.href=encodeURI("http://cang.baidu.com/do/s?word=百度&ct=21"); 

3、 js使用數(shù)據(jù)時(shí)可以使用escape 
  例如:搜藏中history紀(jì)錄。 

4、 escape對(duì)0-255以外的unicode值進(jìn)行編碼時(shí)輸出%u****格式,其它情況下escape,encodeURI,encodeURIComponent編碼結(jié)果相同。 

5、 最多使用的應(yīng)為encodeURIComponent,它是將中文、韓文等特殊字符轉(zhuǎn)換成utf-8格式的url編碼,所以如果給后臺(tái)傳遞參數(shù)需要使用encodeURIComponent時(shí)需要后臺(tái)解碼對(duì)utf-8支持(form中的編碼方式和當(dāng)前頁(yè)面編碼方式相同) 

6、 不編碼:

escape不編碼字符有69個(gè):*,+,-,.,/,@,_,0-9,a-z,A-Z 

  encodeURI不編碼字符有82個(gè):!,#,$,&,',(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-Z 

  encodeURIComponent不編碼字符有71個(gè):!, ',(,),*,-,.,_,~,0-9,a-z,A-Z 

【escape()  encodeURI() 區(qū)別?】

escape() 方法: 
  所有空格、標(biāo)點(diǎn)符號(hào)、重音字符,以及任何其他非ASCII字符都編碼改為"%XX"的形式,xx是16進(jìn)制數(shù)字所代表. 
escape和unescape的編碼和解碼功能, escape返回16進(jìn)制編碼的一種ISO拉丁字符集. unescape的功能將具有特殊值的16進(jìn)制編碼轉(zhuǎn)換為ASCII字符串 
舉例: 
escape('!@#$%^&*(){}[]=:/;?+\'"'): 
結(jié)果:%21@%23%24%25%5E%26*%28%29%7B%7D%5B%5D%3D%3A/%3B%3F+%27%22 

encodeURI() 方法 
    Encodeuri方法返回一個(gè)編碼后的URI. 因此,如果你將其結(jié)果用Decodeuri方法,原始的串會(huì)返回. Encodeuri的方法并不對(duì)以下字符編碼:":"、"/"、"; "、"? ". 但可以使用 encodeuricomponent 的方法對(duì)這些字符進(jìn)行encode. 
    encodes,一種 Uniform Resource Identifier (URI)(URI)逐一替換某些字符,描述為UTF-8編碼的特點(diǎn). 
    例如 : 
    encodeURI('!@#$%^&*(){}[]=:/;?+\'"'): 
    結(jié)果:!@#$%25%5E&*()%7B%7D%5B%5D=:/;?+'%22 

encodeURIComponent() 方法: 
encodeuricomponent 方法返回一個(gè)編碼的URI. 因此,如果你將decodeuricomponent,原來(lái)的串會(huì)返回. 由于所有文字encodesencodeuricomponent方法都會(huì)進(jìn)行編碼,所以要小心,如果存在路徑等串例如: "/FOLDER1/FOLDER2/DEFAULT.HTML". 加密后并不會(huì),如果作為一個(gè)網(wǎng)絡(luò)服務(wù)器的請(qǐng)求將會(huì)失效. 使用這種方法Encodeuri當(dāng)字符串超過(guò)一個(gè)以上URI組成. 
例子:最簡(jiǎn)單的方法就是看它們加密這些字符后生成的代碼. 
encodeURIComponent('!@#$%^&*(){}[]=:/;?+\'"'): 
結(jié)果 !%40%23%24%25%5E%26*()%7B%7D%5B%5D%3D%3A%2F%3B%3F%2B'%22 

【什么時(shí)候適合用什么方法?】 

escape() 方法不會(huì)加密 + 在服務(wù)器端會(huì)被解析為空格以及在表單forms區(qū)域中的spaces.基于這樣的縮減方式,你應(yīng)該盡可能的避免使用這種方法,二選一的話,最好的經(jīng)常使用 encodeURIComponent(). 

escape() 不會(huì)加密: @*/+ 

使用encodeURI()  比 escape() 稍專(zhuān)業(yè)化,它是針對(duì)URIs編碼的 .一個(gè)做為querystring的反面, 屬于URL的一個(gè)部分.使用這種方法是當(dāng)你需要將一個(gè)字符串轉(zhuǎn)換為URIs資源標(biāo)識(shí)以及需要某些字符保持非encode狀態(tài).請(qǐng)記住, 這個(gè)' 字符是不會(huì)進(jìn)行編碼的,因?yàn)樗旧砭桶ㄔ赨RIs里. 

encodeURI()不會(huì)加密: !@#$&*()=:/;?+' 

最后, encodeURIComponent() 方法用在大多數(shù)cases中,當(dāng)你需要對(duì)一個(gè)單獨(dú)URIs部件進(jìn)行編碼,這種方法可以加密某些特殊用于的URIs的字符,因此大部分部件可以包含在里面. 記住, ' 字符本身就包括在URIs里,所以不會(huì)此方法不會(huì)對(duì)其進(jìn)行編碼. 

encodeURIComponent() 不會(huì)加密: !*()'
http://shijian0306.javaeye.com/blog/241264

小編只用過(guò)escape,so起參考作用

以上這篇關(guān)于a href傳參的中文亂碼問(wèn)題就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

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

相關(guān)文章

最新評(píng)論