NSURL包含特殊字符

URL支持26个英文字母、数字和少数几个特殊字符,当URL中包含非标准的字符时,就需要对其进行UTF8编码,如果包含特殊字符会会造成NSURL出错,初始化为NULL,iOS中解决NSURL的初始化出错有两种方法:

- (nullable NSString *)stringByAddingPercentEscapesUsingEncoding:(NSStringEncoding)enc NS_DEPRECATED(10_0, 10_11, 2_0, 9_0, "Use -stringByAddingPercentEncodingWithAllowedCharacters: instead, which always uses the recommended UTF-8 encoding, and which encodes for a specific URL component or subcomponent since each URL component or subcomponent has different rules for what characters are valid.");

方法二:

- (nullable NSString *)stringByAddingPercentEncodingWithAllowedCharacters:(NSCharacterSet *)allowedCharacters NS_AVAILABLE(10_9, 7_0);

参考代码:

    NSString *str=@"http://www.jianshu.com/users/24da48b2ddb3/latest_articles";
    NSURL *url=[NSURL URLWithString:str];
    NSLog(@"URL:%@",url);
    
    str=@"http://www.jianshu.com/users/24da48b2ddb3/ latest_articles";
    NSLog(@"特殊URL:%@",[NSURL URLWithString:str]);
    
    str=[str stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    NSLog(@"特殊URL:%@",[NSURL URLWithString:str]);
    
    str=[@"http://www.jianshu.com/users/24da48b2ddb3/ latest_articles" stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
    NSLog(@"特殊URL:%@",[NSURL URLWithString:str]);
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,388评论 19 139
  • 点击查看原文 Web SDK 开发手册 SDK 概述 网易云信 SDK 为 Web 应用提供一个完善的 IM 系统...
    layjoy阅读 14,739评论 0 15
  • 阅读:读透《如何阅读一本书》 思维方式:金字塔 知识管理:你的知识需要管理
    子睿子瑶阅读 1,605评论 0 0
  • 从前日色变得慢 车,马,邮件都慢 一生只够爱一个人 从前的东西是坏了就修,修不好就忍忍,而现在的东西是坏了就扔。 ...
    拜星月慢阅读 3,056评论 3 4
  • 那年 他遇见她 她遇见他 他们相遇 那月 他爱上她 她爱上他 他们相爱 那天 他成了别人的新郎 她成了别人的新娘 ...
    大琰阅读 1,943评论 4 0