1. 程式人生 > >iOS開發中URL中不合法字元的轉義

iOS開發中URL中不合法字元的轉義

    通常我們在拼接網路請求Url的時候,比如請求網路圖片,通過get方法請求網路資料,有時會遇到請求失敗的問題,於是各種找原因,就是不明白問題出在哪裡。我也是遇到了這種問題最後才發現我本來請求接口裡有個“+”,而到伺服器端反饋給我的資訊顯示變成了空格“ ”,後來才反應過來,原來是請求之前要對url中的特殊字元進行轉義!

    通常用到的URL轉義有兩種方式:

    方式一:stringByAddingPercentEscapesUsingEncoding(有些特殊的字元不能轉義比如“+”)

    NSString *encodeUrlStr=[urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

    方式二:CFURLCreateStringByAddingPercentEscapes(有一個需要轉義的字符集,可以將所有需要轉義的字元轉義成百分數)

    NSString *encodeUrlStr=(__bridge_transfer NSString *)CFURLCreateStringByAddingPercentEscapes(NULL,(__bridge CFStringRef)urlStr,CFSTR("!*'();:@&=+$,/?%#[]"),CFStringConvertNSStringEncodingToEncoding(NSUTF8StringEncoding));
    轉義URL一般會用在涉及加密解密的時候,因為正常的字串加密之後就可能會出現&,+,#等等特殊的符號。