你好,歡迎來到IOS教程網

 Ios教程網 >> IOS使用技巧 >> IOS技巧綜合 >> 對URL編碼

對URL編碼

編輯:IOS技巧綜合
[摘要]本文是對對URL編碼的講解,對學習IOS蘋果軟件開發有所幫助,與大家分享。

  url支持26個英文字母、數字和少數幾個特殊字符,因此,對於url中包含非標准url的字符時,就需要對其進行編碼。iOS中提供了函數stringByAddingPercentEscapesUsingEncoding對中文和一些特殊字符(下面已證實包含"%")進行編碼,但是stringByAddingPercentEscapesUsingEncoding的功能並不完善,對一些較為特殊的字符無效,或者說對一些我不想編碼的字符編碼,而對這些字符則可以使用CFURLCreateStringByteAddingPercentEscapes函數.

  我在之前一直都使用NSString的stringByAddingPercentEscapesUsingEncoding方法,究其原因可能是用起來簡單吧,可以很容易的將url中的中文進行編碼,是很有用的一個方法,但是在一次使用過程中卻出現了問題,看下面的代碼

NSString *urlStr =

@"http://7xoztu.media1.z0.glb.clouddn.com/%E7%8C%9C%E7%8C%9C%E6%88%91%E6%9C%89%E5%A4%9Aai%E4%BD%A0%20-%20%E9%93%83%E5%A3%B0.mp3";

NSString *url =

[urlStrstringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

然後在友盟的分享操作中,將該音樂的url進行分享時出現訪問錯誤,最後發現當urlStr中存在字符"%"時,使用上面的方法,會默認也進行"%"的編碼,於是就造成了訪問錯誤.

  最後查資料,對一些特定的字符串進行處理時應該換一種方法CFURLCreateStringByAddingPercentEscapes,參數含義如下面的

CFStringRef CFURLCreateStringByAddingPercentEscapes(
CFAllocatorRef allocator,
CFStringRef originalString, /*待轉碼的字符串*/
CFStringRef charactersToLeaveUnescaped, /*指示不轉義的字符*/
CFStringRef legalURLCharactersToBeEscaped,/*指示確定轉義的字符*/
CFStringEncoding encoding); /*編碼類型*/

如果同樣需要對上面的urlStr進行編碼,但是指定字符"%"不處理,對了,這個方法默認也是對字符"%"進行編碼的,使用方法參考下面的

NSString *url = CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (CFStringRef)(urlStr), (CFStringRef)@"%", NULL, kCFStringEncodingUTF8));

最後便能夠得到正確的url,成功的做到分享了.

  開發新手,這只是我遇到的一個小細節,也可能很基礎讓各位大神不屑一顧,上面有什麼不對的地方,或者是可以補充的,很樂意能給我個學習的機會,嘿嘿....

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved