OC语言 URL 编码 Data 以及 String 之间转换

来源:互联网 发布:ui界面设计用什么软件 编辑:程序博客网 时间:2024/06/06 07:39
URL 编码 Data 以及 String 之间转换 


//有那么一个字符串

        NSString *newStr = @"www.baidu你妹.com";   //普通字符串,(当然也可以看作是一个地址)

        //转成data传输到另一地

        NSData *dat = [newStrdataUsingEncoding:NSUTF8StringEncoding];

        

        //还原

        NSString *newStrLata = [[NSStringalloc]initWithData:datencoding:NSUTF8StringEncoding];

        NSLog(@"newStrLata = %@",newStrLata);

newStrLata = www.baidu你妹.com  //原来是什么就得回什么


        



        //有那么一个地址字符串

      NSString *newStr2 = @"http://www.baidu.com";   //现在想要传输这个地址上的内容到另一地

        //编码(避免有特殊字符存在)(这个必有http://开头才为网络地址.)

        newStr2 = [newStr2 stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSetURLFragmentAllowedCharacterSet]];

        //转成url,一个地址,

        NSURL *newStr2Url = [NSURLURLWithString:newStr2];

        //转成data,data读取这个地址上的内容并将其转成data数据

        NSData *newStr2UrlData = [NSDatadataWithContentsOfURL:newStr2Url];

        //将读取到的Data内容传输给另一方(还原成string(但是是内空还原,不是地址还原))

        NSString *newStr2UrlDataLate = [[NSStringalloc]initWithData:newStr2UrlDataencoding:NSUTF8StringEncoding];

        NSLog(@"newStr2UrlDataLate = %@",newStr2UrlDataLate);

        //将读取到的Data内容写入到本地一个指定文件

        BOOL newflag = [newStr2UrlData writeToFile:@"/Users/ibokan/Desktop/baidu.html"atomically:YES];

        if (newflag) {

            NSLog(@"success");

        }







有关转码的方法
 

stringByAddingPercentEncodingWithAllowedCharacters



<span style="color:#ff0000;"> </span><span style="color:#006600;">(1) 网络访问请求:中文空格字符编码/解码        stringByAddingPercentEscapesUsingEncoding(只对 `#%^{}[]|\"<> 加空格共14个字符编码,不包括”&?”等符号), ios9将淘汰,建议用stringByAddingPercentEncodingWithAllowedCharacters方法URLFragmentAllowedCharacterSet  "#%<>[\]^`{|}        URLHostAllowedCharacterSet      "#%/<>?@\^`{|}        URLPasswordAllowedCharacterSet  "#%/:<>?@[\]^`{|}        URLPathAllowedCharacterSet      "#%;<>?[\]^`{|}        URLQueryAllowedCharacterSet     "#%<>[\]^`{|}        URLUserAllowedCharacterSet      "#%/:<>?@[\]^`(2)网络访问请求:中文空格字符解码        stringByRemovingPercentEncoding  ----  xcode7可能会提示要将stringByAddingPercentEscapesUsingEncoding替换成此方法,要根据是否是解码来区分        */        //代替stringByAddingPercentEscapesUsingEncoding        let customAllowedSet =  NSCharacterSet(charactersInString:"`#%^{}\"[]|\\<> ").invertedSet</span>
<span style="color:#006600;"></span>
  1. NSString * resourcePath = @"https://www.xiaocaobank.com";  
  2.   
  3.  NSString *encodePath ;  
  4.    
  5.  if (!IOS7_OR_LATER) {  
  6.      encodePath = [resourcePath stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];  
  7.  }else{  
  8.      encodePath = [resourcePath stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet characterSetWithCharactersInString:@"`#%^{}\"[]|\\<> "].invertedSet];  
  9.   
  10.  }  


1 0