關(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ú)法訪問到有效的資源。
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ú)法訪問到有效的資源。
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立即執(zhí)行函數(shù)的三種不同寫法
這篇文章主要介紹了JavaScript立即執(zhí)行函數(shù)的三種不同寫法,需要的朋友可以參考下2014-09-09
如何利用JavaScript?實(shí)現(xiàn)繼承
這篇文章主要介紹了如何利用JavaScript?實(shí)現(xiàn)繼承,JavaScript?在編程語(yǔ)言界是個(gè)特殊種類,它和其他編程語(yǔ)言很不一樣,JavaScript可以在運(yùn)行的時(shí)候動(dòng)態(tài)地改變某個(gè)變量的類型,下面小編將繼續(xù)介紹JavaScript如何實(shí)現(xiàn)繼承,需要的朋友可以參考下2022-02-02
如何使用js正則表達(dá)式驗(yàn)證文件夾名是否符合規(guī)范
眾所周知正則表達(dá)式非常強(qiáng)大,下面這篇文章主要給大家介紹了關(guān)于如何使用js正則表達(dá)式驗(yàn)證文件夾名是否符合規(guī)范的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-05-05
uniapp基礎(chǔ)篇之上傳圖片的實(shí)戰(zhàn)步驟
應(yīng)用uni-app開發(fā)跨平臺(tái)App項(xiàng)目時(shí),上傳圖片、文檔等資源功能需求十分常見,下面這篇文章主要給大家介紹了關(guān)于uniapp基礎(chǔ)篇之上傳圖片的相關(guān)資料,需要的朋友可以參考下2022-12-12
JavaScript通如何過(guò)RGraph實(shí)現(xiàn)動(dòng)態(tài)儀表盤
這篇文章主要介紹了JavaScript通如何過(guò)RGraph實(shí)現(xiàn)動(dòng)態(tài)儀表盤,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-10-10
javaScript動(dòng)態(tài)添加Li元素的實(shí)例
下面小編就為大家分享一篇javaScript動(dòng)態(tài)添加Li元素的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-02-02
Js 時(shí)間函數(shù)getYear()的使用問題探討
不推薦使用getYear()這個(gè)函數(shù),因?yàn)樵诨鸷酗@示是不正確的,所以推薦使用getFullYear() 函數(shù),接下來(lái)為大家詳細(xì)介紹下getYear函數(shù)在不同瀏覽下的使用問題2013-04-04
精通Javascript系列之?dāng)?shù)據(jù)類型 字符串
下面先講一下字符串String字符串由零個(gè)或者多個(gè)字符構(gòu)成。字符可以包括字母、數(shù)字、標(biāo)點(diǎn)符號(hào)和空格。2011-06-06

