ios獲取數(shù)據(jù)之encodeURI和decodeURI的實(shí)例
在APP開發(fā)過程中,免不了要進(jìn)行ios的數(shù)據(jù)處理,在ios傳遞數(shù)據(jù)的過程中,會(huì)出現(xiàn)JSON數(shù)據(jù)獲取不到的情況,這時(shí)候就輪到encodeURI 和 decodeURI出馬了。
1、encodeURI,decodeURI
encodeURI:將字符串作為 URI 進(jìn)行編碼
•不會(huì)對(duì) ASCII 字母和數(shù)字進(jìn)行編碼,也不會(huì)對(duì)這些 ASCII 標(biāo)點(diǎn)符號(hào)進(jìn)行編碼( 即:- _ . ! ~ * ' ( ) )。
•目的是對(duì) URI 全部的編碼,因此對(duì)在 URI 中具有特殊含義的 ASCII 標(biāo)點(diǎn)符號(hào)(即:;/?:@&=+$,#)是不會(huì)進(jìn)行編碼的。所以,此函數(shù)別名為 encodeURL 不為過,相當(dāng)于 PHP 的 url_encode 。
例子:
encodeURI("http://ydr.me?user=hello 云淡然"); // "http://ydr.me?user=hello%20%E4%BA%91%E6%B7%A1%E7%84%B6" decodeURI("http://ydr.me?user=hello%20%E4%BA%91%E6%B7%A1%E7%84%B6"); // http://ydr.me?user=hello 云淡然
由于 encodeURI 是對(duì) URL 的完整編碼,所以常用于URL的跳轉(zhuǎn)之處:
location.href=encodeURI('http://baidu.com/s?word=hello 云淡然'); // "http://baidu.com/s?word=hello%20%E4%BA%91%E6%B7%A1%E7%84%B6"
在各個(gè)瀏覽器打開該地址,表現(xiàn)均不相同:
•ie的url表現(xiàn)的最規(guī)范(完全按照encodeURI編碼)
•chrome的url表現(xiàn)比較規(guī)范(部分按照encodeURI編碼)
•firefox的url表現(xiàn)最不規(guī)范(完全沒有安裝encodeURI編碼)
雖然各個(gè)瀏覽器的URL表現(xiàn)均不相同,但在 firefox 和 chrome 中url的可讀性最高,ie最低。
2、encodeURIComponent 和 decodeURIComponent
encodeURI 是對(duì)完整的URL進(jìn)行編碼,而 encodeURIComponent 是對(duì)URL的參數(shù)進(jìn)行編碼的,并且其編碼特點(diǎn)如下:
•不會(huì)對(duì) ASCII 字母和數(shù)字進(jìn)行編碼,也不會(huì)對(duì)這些 ASCII 標(biāo)點(diǎn)符號(hào)進(jìn)行編碼(即: - _ . ! ~ * ' ( ) )。
•目的是對(duì) URI 部分的編碼,因此對(duì)在 URI 中具有特殊含義的 ASCII 標(biāo)點(diǎn)符號(hào)(即:;/?:@&=+$,#)是會(huì)進(jìn)行編碼的。
encodeURIComponent("http://ydr.me?user=hello world"); // "http%3A%2F%2Fydr.me%3Fuser%3Dhello%20world" decodeURIComponent("http%3A%2F%2Fydr.me%3Fuser%3Dhello%20world"); // http://ydr.me?user=hello world
由于 encodeURIComponent 是對(duì)URL部分編碼,因此常用于queryString、hashSearch、hashPath以及Cookie中,如:
// queryString 編碼 "http://ydr.me?from=" + encodeURIComponent("http://baidu.com"); // "http://ydr.me?from=http%3A%2F%2Fbaidu.com" // hashSearch、hashPath 編碼 "http://ydr.me#?from=" + encodeURIComponent("http://baidu.com"); // "http://ydr.me#?from=http%3A%2F%2Fbaidu.com" "http://ydr.me#!from/" + encodeURIComponent("http://baidu.com"); // "http://ydr.me#!from/http%3A%2F%2Fbaidu.com" // cookie 編碼 document.cookie = "from=" + encodeURIComponent("http://baidu.com"); // "from=http%3A%2F%2Fbaidu.com"
3、escape 和 unescape
escape 與 encodeURI 和 encodeURIComponent 類似,都是對(duì)字符串進(jìn)行編碼。不同點(diǎn)在于該方法不會(huì)對(duì) ASCII 字母和數(shù)字進(jìn)行編碼,也不會(huì)對(duì)這些 ASCII 標(biāo)點(diǎn)符號(hào)(即: * @ - _ + . / )進(jìn)行編碼,其他所有的字符都會(huì)被轉(zhuǎn)義序列替換。
注意:ECMAScript v3 反對(duì)使用該方法,應(yīng)用使用 decodeURI() 和 decodeURIComponent() 替代它。
以上這篇ios獲取數(shù)據(jù)之encodeURI和decodeURI的實(shí)例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
實(shí)例講解iOS應(yīng)用開發(fā)中UIPickerView滾動(dòng)選擇欄的用法
這篇文章主要介紹了iOS應(yīng)用開發(fā)中UIPickerView滾動(dòng)選擇欄的用法,示例代碼基于傳統(tǒng)的Objective-C,需要的朋友可以參考下2016-04-04IOS如何使用CAShapeLayer實(shí)現(xiàn)復(fù)雜的View的遮罩效果
這篇文章主要為大家詳細(xì)介紹了IOS如何使用CAShapeLayer實(shí)現(xiàn)復(fù)雜的View的遮罩效果,感興趣的小伙伴們可以參考一下2016-03-03iOS 監(jiān)聽回調(diào)機(jī)制KVO實(shí)例
下面小編就為大家分享一篇iOS 監(jiān)聽回調(diào)機(jī)制KVO實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-01-01IOS手勢(shì)操作(拖動(dòng)、捏合、旋轉(zhuǎn)、點(diǎn)按、長按、輕掃、自定義)
這篇文章主要介紹了IOS手勢(shì)操作(拖動(dòng)、捏合、旋轉(zhuǎn)、點(diǎn)按、長按、輕掃、自定義),需要的朋友可以參考下2015-07-07iOS13即將到來,iOS推送DeviceToken適配方案詳解
這篇文章主要介紹了iOS13即將到來,iOS推送DeviceToken適配方案詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09