今天遇到一個(gè)坑,我默默的把它給埋了汁胆,測試妹妹跟我說我提交個(gè) "+ "號上傳到服務(wù)器說我發(fā)的內(nèi)容不能為空,這我就很不開心了霜幼,我都做了文字為空的判斷了嫩码,咋就說我沒法東西,結(jié)果人家還拿了安卓機(jī)來試罪既,來來來铸题,瞧瞧,你看人家都可以琢感,就你"不行"丢间,丟人丟到家,無言以對驹针,默默的找問題千劈,原來是在 iOS 程序訪問 HTTP 資源時(shí)需要對 URL 進(jìn)行 Encode,比如像拼出來的 http://xxxx.cc?p1=%+&sd f&p2=中文牌捷,其中的中文墙牌、特殊符號&%和空格都必須進(jìn)行轉(zhuǎn)譯才能正確訪問涡驮。
NSString *url=@"http://xxx.cc?p1=%+&sd &p2=中文"
NSString *Str = CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (CFStringRef)url, nil, CFSTR(":/?#[]@!$&’()*+,;="), kCFStringEncodingUTF8));
接下來也是轉(zhuǎn)碼問題,但我們接收到的數(shù)據(jù)中包含的是中文 如 “%E7%B3%96%E5%B0%BF%E7%97%85%E5%B9%B6%E5%8F%91%E7%97%87%E4%BD%A0%E7%9F%A5%E5%A4%9A%E5%B0%91%EF%BC%9F” 我就懵了喜滨,咋回事
NSString *text =@"=%E7%B3%96%E5%B0%BF%E7%97%85%E5%B9%B6%E5%8F%91%E7%97%87%E4%BD%A0%E7%9F%A5%E5%A4%9A%E5%B0%91%EF%BC%9F";
NSString *str = [text substringFromIndex:9]stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];