今天遇到一个坑,我默默的把它给埋了,测试妹妹跟我说我提交个 "+ "号上传到服务器说我发的内容不能为空,这我就很不开心了,我都做了文字为空的判断了,咋就说我没法东西,结果人家还拿了安卓机来试,来来来,瞧瞧,你看人家都可以,就你"不行",丢人丢到家,无言以对,默默的找问题,原来是在 iOS 程序访问 HTTP 资源时需要对 URL 进行 Encode,比如像拼出来的 http://xxxx.cc?p1=%+&sd f&p2=中文,其中的中文、特殊符号&%和空格都必须进行转译才能正确访问。
NSString *url=@"http://xxx.cc?p1=%+&sd &p2=中文"
NSString *Str = CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (CFStringRef)url, nil, CFSTR(":/?#[]@!$&’()*+,;="), kCFStringEncodingUTF8));
接下来也是转码问题,但我们接收到的数据中包含的是中文 如 “%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];