美文网首页
iOS URL中含有中文和转义字符时的处理

iOS URL中含有中文和转义字符时的处理

作者: 樱木艾克 | 来源:发表于2015-12-09 19:07 被阅读5746次

    发现一个蛋疼的问题,如果urlString里面有时含有中文,使用 [NSURL URLWithString:urlString] 生成URL对象时,iOS客户端不能正确进行网络请求,网上找到的URLEncode方法又不能完全解决问题.

    方法1:

    NSString *encodedString = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

    方法2:

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

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

    CFStringRefCFURLCreateStringByAddingPercentEscapes(CFAllocatorRefallocator, CFStringReforiginalString, CFStringRefcharactersToLeaveUnescaped, CFStringReflegalURLCharactersToBeEscaped, CFStringEncodingencoding);

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

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

    相关文章

      网友评论

          本文标题:iOS URL中含有中文和转义字符时的处理

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