IOS开发入门之Objective-C学习——中文URL编码和解码
凌雪 2018-08-29 来源 :网络 阅读 1497 评论 0

摘要:本文将带你了解IOS开发入门之Objective-C学习——中文URL编码和解码,希望本文对大家学IOS有所帮助

本文将带你了解IOS开发入门之Objective-C学习——中文URL编码和解码,希望本文对大家学IOS有所帮助


Cpp代码    
     
    发现NSString类中有内置的方法可以实现。他们分别是:
    - (NSString   *)stringByAddingPercentEscapesUsingEncoding:(NSStringEncoding)encoding-   (NSString   *)stringByReplacingPercentEscapesUsingEncoding:(NSStringEncoding)encoding
             只要传入相应的编码即可以进行编码和解码了,不过此方法是对整个Url进行编码的所以如果有Query   String中带有&?/等是不会进行编码转换的,如果有这方面的需要的朋友可以参照下面提供的网址,找到解决方法://www.cocoachina.com/bbs/read.php?tid-2469.html
     
    示例:
    Cpp代码  NSString* string1 = @"https://www.cloudsafe.com/文件夹";        NSString* string2 = [string1 stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];  NSString* string3 = [string2 stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];        NSString* string4 = [string2 stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];  NSString* string5 = [string3 stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];        NSString* string6 = [string4 stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];  NSString* string7 = [string5 stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];        输出结果: string5 & 6 重复编码encode     string1:https://www.cloudsafe.com/文件夹     string2:https://www.cloudsafe.com/%E6%96%87%E4%BB%B6%E5%A4%B9  string3:https://www.cloudsafe.com/%25E6%2596%2587%25E4%25BB%25B6%25E5%25A4%25B9     string4:https://www.cloudsafe.com/文件夹  string5:https://www.cloudsafe.com/%E6%96%87%E4%BB%B6%E5%A4%B9     string6:https://www.cloudsafe.com/文件夹  string7:https://www.cloudsafe.com/文件夹  NSString*   string1 = @"https://www.cloudsafe.com/文件夹";
       
    NSString* string2 = [string1   stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    NSString* string3 = [string2   stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
       
    NSString* string4 = [string2   stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    NSString* string5 = [string3   stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
       
    NSString* string6 = [string4   stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    NSString* string7 = [string5   stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
       
    输出结果: string5 & 6 重复编码encode
     
    string1:https://www.cloudsafe.com/文件夹
     
    string2:https://www.cloudsafe.com/%E6%96%87%E4%BB%B6%E5%A4%B9
      string3:https://www.cloudsafe.com/%25E6%2596%2587%25E4%25BB%25B6%25E5%25A4%25B9
     
    string4:https://www.cloudsafe.com/文件夹
    string5:https://www.cloudsafe.com/%E6%96%87%E4%BB%B6%E5%A4%B9
     
    string6:https://www.cloudsafe.com/文件夹
    string7:https://www.cloudsafe.com/文件夹
     
    或者用
    Cpp代码    +(NSString*)encodeURIComponent:(NSString*)str{     return CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(NULL, (__bridge CFStringRef)str, NULL, (__bridge CFStringRef)@"!*'\"();:@&=+$,/?%#[]% ", CFStringConvertNSStringEncodingToEncoding(NSUTF8StringEncoding)));    }  +(NSString*)encodeURIComponent:(NSString*)str{
       return   CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(NULL, (__bridge   CFStringRef)str, NULL, (__bridge   CFStringRef)@"!*'\"();:@&=+$,/?%#[]% ",   CFStringConvertNSStringEncodingToEncoding(NSUTF8StringEncoding))); 
    }
     
    iOS9废弃 这些方法已废弃, 用以下方法替换
     
    Cpp代码    NSString *urlString = @"//www.3gbizhi.com/lists-全部/1.html";  //urlString = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];      urlString = [urlString stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];  ////www.3gbizhi.com/lists-%E5%85%A8%E9%83%A8/1.html  NSString   *urlString = @"//www.3gbizhi.com/lists-全部/1.html";
    //urlString = [urlString   stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
        urlString = [urlString   stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet   URLQueryAllowedCharacterSet]];

   
     
     
         

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之IOS频道!

本文由 @凌雪 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved