美文网首页
NSUrl 还有中文时候的编码

NSUrl 还有中文时候的编码

作者: 乡水情缘 | 来源:发表于2017-01-07 13:32 被阅读21次

[NSURLURLWithString:urlString]生成URL对象时,iOS客户端不能正确进行网络请求,网上找到的URLEncode方法又不能完全解决问题.
方法1:

NSString* encodedString = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

方法2:

NSString * encodedString = (NSString *)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,(CFStringRef)urlString,NULL,NULL,kCFStringEncodingUTF8);

这两种方法当urlString里含有中文时URL编码是正确的,但是如果其中含有已转义的%等符号时,又会再次转义而导致错误.

所以在此推荐使用以下方法:

+ (NSString *)encodeUrlStr:(NSString *)urlStr{
    NSString *encodedString = (NSString *)
    
    CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,
                                                              
                                                              (CFStringRef)urlStr,
                                                              
                                                              (CFStringRef)@"!$&'()*+,-./:;=?@_~%#[]",
                                                              
                                                              NULL,
                                                              
                                                              kCFStringEncodingUTF8));

    return encodedString;
}

相关文章

网友评论

      本文标题:NSUrl 还有中文时候的编码

      本文链接:https://www.haomeiwen.com/subject/zvrfbttx.html