美文网首页
iOS 的url中含有中文解决方法

iOS 的url中含有中文解决方法

作者: sll_ | 来源:发表于2016-11-15 14:48 被阅读109次

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

    方法1:

    NSString* encodedString = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

    方法2:

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

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

    查看方法2参数说明:

    CFStringRef CFURLCreateStringByAddingPercentEscapes(CFAllocatorRef allocator,CFStringRef originalString, CFStringRef charactersToLeaveUnescaped, CFStringRef legalURLCharactersToBeEscaped,CFStringEncoding encoding);

    因此做出修改,写出方法:

    NSString *encodedString = (NSString *)

    CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,

    (CFStringRef)urlString,

    (CFStringRef)@"!$&'()*+,-./:;=?@_~%#[]",

    NULL,

    kCFStringEncodingUTF8);

    相关文章

      网友评论

          本文标题:iOS 的url中含有中文解决方法

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