url即統一資源定位符,是通用資源標志符URI的一種。
由於有效的URI中不能包含某些字符,如空格等,如果不利用相應編碼函數對URI進行編碼(浏覽器會對相應的URL進行處理),那麼無法訪問到有效的資源。
javascript的Global對象(javascript的內置對象)中有四個URI方法,分別是encodeURI和decodeURI,encodeURIComponent和decodeURIComponent,浏覽器模型(BOM)提供了escape和unescape。在實際應用中,URI方法更可取,因為URI方法會對所有的Unicode符號編碼,而BOM提供的escape和unescape只對ASCII符號進行編碼。此外escape,unescape可以用來對數據進行加密和解密處理。
其中encodeURI和decodeURI是作相反的處理,encodeURIComponent和decodeURIComponent是做相反的處理,escape和unescape做相反的處理。
encodeURI是處理完整的URI,而encodeURIComponent處理URI片段,encodeURI編碼除:!,#,¥,&,',(,),×,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-Z(共82個)以外的字符,而encodeURIComponent編碼除:!, ',(,),*,-,.,_,~,0-9,a-z,A-Z(共71個)以外的字符,escape編碼除:*,+,-,.,/,@,_,0-9,a-z,A-Zs(共61個)以外的字符。
請求服務器(服務器是64位的操作系統)端以含有特殊字符(+)的為名字的文件,用encodeURI,decodeURIComponent或者escape都會提示相應的資源不存在,這是為什麼呢?
js代碼:
復制代碼 代碼如下:
url ="http://192.168.6.135/nas135/MyDocument/1+2.txt"
window.open(EncodeURI(url),"","","");
通過debug看到
EncodeURI(url)="http://192.168.6.135/nas135/MyDocument/1%2b2.txt",但是卻打不開服務器端1+2.txt的文件,不知道是不是因為64機器的原因?請各位大俠幫忙解釋一下?