關(guān)于URL中的特殊符號(hào)使用介紹
更新時(shí)間:2011年11月03日 15:49:46 作者:
因?yàn)榻?jīng)常被Javascript中的rul的相關(guān)知識(shí)困擾,今天來(lái)總結(jié)一下URL的特殊字符
url即統(tǒng)一資源定位符,是通用資源標(biāo)志符URI的一種。
由于有效的URI中不能包含某些字符,如空格等,如果不利用相應(yīng)編碼函數(shù)對(duì)URI進(jìn)行編碼(瀏覽器會(huì)對(duì)相應(yīng)的URL進(jìn)行處理),那么無(wú)法訪問(wèn)到有效的資源。
javascript的Global對(duì)象(javascript的內(nèi)置對(duì)象)中有四個(gè)URI方法,分別是encodeURI和decodeURI,encodeURIComponent和decodeURIComponent,瀏覽器模型(BOM)提供了escape和unescape。在實(shí)際應(yīng)用中,URI方法更可取,因?yàn)閁RI方法會(huì)對(duì)所有的Unicode符號(hào)編碼,而BOM提供的escape和unescape只對(duì)ASCII符號(hào)進(jìn)行編碼。此外escape,unescape可以用來(lái)對(duì)數(shù)據(jù)進(jìn)行加密和解密處理。
其中encodeURI和decodeURI是作相反的處理,encodeURIComponent和decodeURIComponent是做相反的處理,escape和unescape做相反的處理。
encodeURI是處理完整的URI,而encodeURIComponent處理URI片段,encodeURI編碼除:!,#,¥,&,',(,),×,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-Z(共82個(gè))以外的字符,而encodeURIComponent編碼除:!, ',(,),*,-,.,_,~,0-9,a-z,A-Z(共71個(gè))以外的字符,escape編碼除:*,+,-,.,/,@,_,0-9,a-z,A-Zs(共61個(gè))以外的字符。
請(qǐng)求服務(wù)器(服務(wù)器是64位的操作系統(tǒng))端以含有特殊字符(+)的為名字的文件,用encodeURI,decodeURIComponent或者escape都會(huì)提示相應(yīng)的資源不存在,這是為什么呢?
js代碼:
url ="http://192.168.6.135/nas135/MyDocument/1+2.txt"
window.open(EncodeURI(url),"","","");
通過(guò)debug看到
EncodeURI(url)="http://192.168.6.135/nas135/MyDocument/1%2b2.txt",但是卻打不開服務(wù)器端1+2.txt的文件,不知道是不是因?yàn)?4機(jī)器的原因?請(qǐng)各位大俠幫忙解釋一下?
由于有效的URI中不能包含某些字符,如空格等,如果不利用相應(yīng)編碼函數(shù)對(duì)URI進(jìn)行編碼(瀏覽器會(huì)對(duì)相應(yīng)的URL進(jìn)行處理),那么無(wú)法訪問(wèn)到有效的資源。
javascript的Global對(duì)象(javascript的內(nèi)置對(duì)象)中有四個(gè)URI方法,分別是encodeURI和decodeURI,encodeURIComponent和decodeURIComponent,瀏覽器模型(BOM)提供了escape和unescape。在實(shí)際應(yīng)用中,URI方法更可取,因?yàn)閁RI方法會(huì)對(duì)所有的Unicode符號(hào)編碼,而BOM提供的escape和unescape只對(duì)ASCII符號(hào)進(jìn)行編碼。此外escape,unescape可以用來(lái)對(duì)數(shù)據(jù)進(jìn)行加密和解密處理。
其中encodeURI和decodeURI是作相反的處理,encodeURIComponent和decodeURIComponent是做相反的處理,escape和unescape做相反的處理。
encodeURI是處理完整的URI,而encodeURIComponent處理URI片段,encodeURI編碼除:!,#,¥,&,',(,),×,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-Z(共82個(gè))以外的字符,而encodeURIComponent編碼除:!, ',(,),*,-,.,_,~,0-9,a-z,A-Z(共71個(gè))以外的字符,escape編碼除:*,+,-,.,/,@,_,0-9,a-z,A-Zs(共61個(gè))以外的字符。
請(qǐng)求服務(wù)器(服務(wù)器是64位的操作系統(tǒng))端以含有特殊字符(+)的為名字的文件,用encodeURI,decodeURIComponent或者escape都會(huì)提示相應(yīng)的資源不存在,這是為什么呢?
js代碼:
復(fù)制代碼 代碼如下:
url ="http://192.168.6.135/nas135/MyDocument/1+2.txt"
window.open(EncodeURI(url),"","","");
通過(guò)debug看到
EncodeURI(url)="http://192.168.6.135/nas135/MyDocument/1%2b2.txt",但是卻打不開服務(wù)器端1+2.txt的文件,不知道是不是因?yàn)?4機(jī)器的原因?請(qǐng)各位大俠幫忙解釋一下?
相關(guān)文章
JavaScript Tips 使用DocumentFragment加快DOM渲染速度
大家在開發(fā)JavaScript應(yīng)用的時(shí)候,如果遇到這種大量節(jié)點(diǎn)的情況,不妨將DocumentFragment作為一個(gè)備選的方案。2010-06-06JavaScript實(shí)現(xiàn)自定義拖拽排序列表
在Web開發(fā)中,拖拽排序是一個(gè)常見的需求,它允許用戶通過(guò)拖拽的方式重新排列列表項(xiàng)的順序,本文將介紹如何使用原生JavaScript實(shí)現(xiàn)這一功能,需要的可以了解下2024-01-01JS實(shí)現(xiàn)隱藏同級(jí)元素后只顯示JS文件內(nèi)容的方法
這篇文章主要介紹了JS實(shí)現(xiàn)隱藏同級(jí)元素后只顯示JS文件內(nèi)容的方法,可實(shí)現(xiàn)將與js文件的同級(jí)元素全部隱藏,只顯示js文件內(nèi)容的功能,涉及javascript針對(duì)頁(yè)面元素的遍歷與屬性修改相關(guān)技巧,需要的朋友可以參考下2016-09-09微信小程序?qū)崙?zhàn)之雙人五子棋游戲是實(shí)現(xiàn)
這篇文章主要為大家詳細(xì)介紹了如何利用微信小程序?qū)崿F(xiàn)雙人五子棋游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-05-05IE6/7/8中Option元素未設(shè)value時(shí)Select將獲取空字符串
可以看到當(dāng)忘記寫option的value時(shí)這些現(xiàn)代瀏覽器都會(huì)盡量返回正確的(客戶端程序員想要的)結(jié)果value,其容錯(cuò)性比IE6/7/8做的更好。2011-04-04event對(duì)象獲取方法總結(jié)在google瀏覽器下測(cè)試
Event 對(duì)象代表事件的狀態(tài),比如事件在其中發(fā)生的元素、鍵盤按鍵的狀態(tài)、鼠標(biāo)的位置、鼠標(biāo)按鈕的狀態(tài),Event對(duì)象的獲取方法如下,感興趣的朋友可以參考下2013-11-11用webpack4開發(fā)小程序的實(shí)現(xiàn)方法
這篇文章主要介紹了用webpack4開發(fā)小程序的實(shí)現(xiàn)方法,分享通過(guò)webpack來(lái)構(gòu)建小程序的開發(fā)架構(gòu),感興趣的小伙伴們可以參考一下2019-06-06