ios網絡請求特殊字符&處理

原文地址:http://www.xuebuyuan.com/2039420.html

CFURLCreateStringByAddingPercentEscapes

在做項目的的時候,通常都要用到網絡搜索,因此連接(也就是NSURL)也會老是存在一些中文或者特殊字符,可是對於網址是不容許存在一些特殊字符的,因此在這裏我列出一個對一個字符串進行NSUTF-8轉碼的宏,但願能夠給你們提供方便。html

If you have tried to send any information using a GET web request, you would have come cross an annoying problem, That annoying problem is making sure that the URL is corrently encoded.web

  The issue is that by default most of these methods leave characters such as & = ? within a URL, as they are strictly speaking valid. The problem is that these characters have special meanings in a GET request, and will more than likely make your request invalid.
  也就是說, URL 字符串 裏面可能包含某些字符,好比‘$‘ ‘&’ ‘?’...等,這些字符在 URL 語法中是具備特殊語法含義的,
好比 URL :http://www.baidu.com/s?wd=%BD%AA%C3%C8%D1%BF&rsv_bp=0&rsv_spt=3&inputT=3512

中 的 & 起到分割做用 等等,若是 你提供的URL 自己就含有 這些字符,就須要把這些字符 轉化爲 「%+ASCII」 形式,以避免形成衝突。
  這就引入:CFURLCreateStringByAddingPercentEscapes 函數。
  該函數將 將要添加到URL的字符串進行特殊處理,若是這些字符串含有 &, ? 這些特殊字符,用「%+ASCII」 代替之。
CFURLCreateStringByAddingPercentEscapes(
  kCFAllocatorDefault,
  (CFStringRef)parameter,
  NULL,
   CFSTR(":/?#[]@!$&’()*+,;="),     // 肯定 parameter 字符串中含有:/?#[]@!$&’()*+,;=這些字符時候,這些字符須要被轉化,以避免與語法衝突。
  kCFStringEncodingUTF8
);網絡

 

#define NSUTF8String(v) ((NSString *)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,(CFStringRef)(v),  NULL, CFSTR(":/?#[]@!$’()*+,;"), kCFStringEncodingUTF8)) 這裏記得調用這個宏以後要對得到的字符串進行一次release函數

相關文章
相關標籤/搜索