欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

ios開發(fā)url編碼,ios編碼規(guī)范

不深入只淺出——iOS的URL編碼和解碼

Http協(xié)議中參數(shù)的傳遞是通過鍵值對"key=value"形式來進(jìn)行,多參數(shù)之間使用“”符號對鍵值對進(jìn)行拼接,如:"?key1=value1key2=value2"。而服務(wù)端對URL的解析,也是以“”分割出每個參數(shù)鍵值對,以“=”分割每個鍵值對中的鍵和值,一個字節(jié)一個字節(jié)對URL字節(jié)流進(jìn)行處理的。

正安ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為成都創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:028-86922220(備注:SSL證書合作)期待與您的合作!

上述的解析會產(chǎn)生一個問題:如果參數(shù)的值本身就帶有“”,“=”這種特殊字符怎么辦?這就是進(jìn)行URL編碼的原因所在。URL編碼原理只是在特殊字符的各個字節(jié)前加上%,這里說的特殊字符不僅僅只是“=”和“”,而且還有保留字符、不安全字符以及非ASCII碼字符,下面會詳細(xì)解析。

既然是編碼,自然就會用到字符集,就像解析密碼需要密碼本一樣。URL編碼默認(rèn)使用的字符集是US-ASCII,所以對于URL編碼,最準(zhǔn)確的定義應(yīng)該是: 百分號(%)加上該字節(jié)對應(yīng)的兩位US-ASCII字符(由0123456789ABCDEF組成,代表該字節(jié)的十六進(jìn)制形式) 。那么,什么情況下需要對字節(jié)進(jìn)行編碼呢,還是說所有字節(jié)都需要編碼?對于URL中的合法字符,編碼和不編碼是等價的,也就是說,假如參數(shù)為:key1=url,這種情況下編碼與不編碼是一樣的,進(jìn)而言之,只有對保留字符、不安全字符以及非ASCII碼字符進(jìn)行的URL編碼才有實際的意義。

ios怎么對url進(jìn)行一下編碼

中文編碼系統(tǒng)自帶的方法。如下

NSString* encodedString = [urlStringstringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

iOS 開發(fā) url編解碼_encodeURIComponent、decodeURIComponent

【作者前言】:13年入圈,分享些本人工作中遇到的點點滴滴那些事兒,17年剛開始寫博客,高手勿噴!以分享交流為主,歡迎各路豪杰點評改進(jìn)!

鏈接分享場景非常之多,為了更好的保護(hù)一些數(shù)據(jù)信息,需要我們進(jìn)行一些編解碼處理

這里為了能夠跟Web互通,整理了一下。

跨平臺url數(shù)據(jù)編解碼互通, 保護(hù)數(shù)據(jù)信息安全性

① url encodeURIComponent 編碼

② URL decodeURIComponent 解碼

(IOS)字符串encode編碼(編碼url字符串不成功的問題)

// 我們一般用這個方法處理stringByAddingPercentEscapesUsingEncoding但是這個方法好想不會處理/和這種特殊符號,這種情況就需要用下邊這個方法處理

@implementationNSString (NSString_Extended)

- (NSString*)urlencode {

NSMutableString *output = [NSMutableString string];

const unsigned char *source = (const unsigned char *)[self UTF8String];

intsourceLen =strlen((constchar*)source);

for(inti =0; i sourceLen; ++i) {

? ? constunsignedcharthisChar = source[i];

? ? if(thisChar ==' '){

? ? ? ? [outputappendString:@"+"];

? ? }elseif(thisChar =='.'|| thisChar =='-'|| thisChar =='_'|| thisChar =='~'||

? ? ? ? ? ? ? (thisChar ='a' thisChar ='z') ||

? ? ? ? ? ? ? (thisChar ='A' thisChar ='Z') ||

? ? ? ? ? ? ? (thisChar ='0' thisChar ='9')) {

? ? ? ? [outputappendFormat:@"%c", thisChar];

? ? }else{

? ? ? ? [outputappendFormat:@"%%%02X", thisChar];

? ? }

}

returnoutput;

}

iOS 詳解URL的組成及對應(yīng)屬性

統(tǒng)一資源定位符 (英語:Uniform Resource Locator,常縮寫為URL),俗稱網(wǎng)址。

如同在網(wǎng)絡(luò)上的門牌,是因特網(wǎng)上標(biāo)準(zhǔn)的資源的地址(Address)。

相關(guān)定義:

URI,是uniform resource identifier,統(tǒng)一資源標(biāo)識符,用來唯一的標(biāo)識一個資源。

URN,uniform resource name,統(tǒng)一資源命名,是通過名字來標(biāo)識資源,比如mailto:java-net@java.sun.com。

統(tǒng)一資源定位符的標(biāo)準(zhǔn)格式如下:

統(tǒng)一資源定位符的完整格式如下:

超文本傳輸協(xié)議([HTTP])的統(tǒng)一資源定位符將從因特網(wǎng)獲取信息的五個基本元素包括在一個簡單的地址中:

1.? 傳送協(xié)議。Data URI scheme

2.? 層級URL標(biāo)記符號(為[//],固定不變)

3.? 訪問資源需要的憑證信息(可省略)

4.? 服務(wù)器。(通常為域名,有時為IP地址)

5.? 端口號。(以數(shù)字方式表示,若為HTTP的默認(rèn)值“:80”可省略)

6.? 路徑。(以“/”字符區(qū)別路徑中的每一個目錄名稱)

7.? 查詢。(GET模式的窗體參數(shù),以“?”字符為起點,每個參數(shù)以“”隔開,再以“=”分開參數(shù)名稱與數(shù)據(jù),通常以UTF8的URL編碼,避開字符沖突的問題)

8.? 錨點、片段。以“#”字符為起點

iOS的URL屬性對應(yīng)的部分總覽:

現(xiàn)在以下面的URL為例,講解一下組成部分以及iOS所對應(yīng)的屬性

從上面的URL可以看出,一個完整的URL包括以下幾部分:

1. 協(xié)議部分( Scheme ):該URL的協(xié)議部分為“http:”,這代表網(wǎng)頁使用的是HTTP協(xié)議。在Internet中可以使用多種協(xié)議,如HTTP,F(xiàn)TP,HTTPS等等本例中使用的是HTTP協(xié)議。在"HTTP"后面的“//”為分隔符

2. 域名部分:該URL的域名部分為“”。一個URL中,也可以使用IP地址作為域名使用(如:10.20.1.2)

3. 端口部分:跟在域名后面的是端口,域名和端口之間使用“:”作為分隔符。端口不是一個URL必須的部分,如果省略端口部分,將采用默認(rèn)端口

4. 虛擬目錄部分:從域名后的第一個“/”開始到最后一個“/”為止,是虛擬目錄部分。虛擬目錄也不是一個URL必須的部分。本例中的虛擬目錄是“/trip/”

文件名部分:從域名后的最后一個“/”開始到“?”為止,是文件名部分,如果沒有“?”,則是從域名后的最后一個“/”開始到“#”為止,是文件部分,如果沒有“?”和“#”,那么從域名后的最后一個“/”開始到結(jié)束,都是文件名部分。本例中的文件名是“index.asp”。文件名部分也不是一個URL必須的部分,如果省略該部分,則使用默認(rèn)的文件名

iOS中并沒有區(qū)分虛擬目錄和文件名,而是統(tǒng)一處理

5. 錨部分:從“#”開始到最后,都是錨部分。本例中的錨部分是“name”。錨部分也不是一個URL必須的部分

6. 參數(shù)部分:從“?”開始到“#”為止之間的部分為參數(shù)部分,又稱搜索部分、查詢部分。本例中的參數(shù)部分為“boardID=5ID=24618page=1”。參數(shù)可以允許有多個參數(shù),參數(shù)與參數(shù)之間用“”作為分隔符。

注意:#代表網(wǎng)頁中的一個位置。其右面的字符,就是該位置的標(biāo)識符。

#是用來指導(dǎo)瀏覽器動作的,對服務(wù)器端完全無用。所以,HTTP請求中不包括#。

iOS中urlencode

iOS開發(fā)過程中有很多的編碼,最近使用了urlencode編碼,使用這個編碼的主要作用是解決url中出現(xiàn)中文或者特殊字符在網(wǎng)絡(luò)傳輸過程中出現(xiàn)的亂碼.

實際上是第一步先創(chuàng)建要轉(zhuǎn)義的字符集合,.然后再使用

stringByAddingPercentEncodingWithAllowedCharacters方法進(jìn)行轉(zhuǎn)義.

字符串nickname就是通過urlencode轉(zhuǎn)義之后的字符.

invertedSet 這個設(shè)置是必須要用的,不然轉(zhuǎn)義set集合不會起到作用.

這是打印的hString2的urlencode之后的值,顯而易見,這是轉(zhuǎn)換成功的.

當(dāng)前標(biāo)題:ios開發(fā)url編碼,ios編碼規(guī)范
當(dāng)前路徑:http://chinadenli.net/article20/dsgeijo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供虛擬主機網(wǎng)站建設(shè)用戶體驗營銷型網(wǎng)站建設(shè)外貿(mào)建站服務(wù)器托管

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)