iOS下URL編碼

來源:互聯網
上載者:User

標籤:des   style   blog   http   color   os   io   使用   ar   

使用NSString預設的URL編碼,會對漢字等進行轉義,但是對=+等這些字元不會進行轉義

所以要手動實現這些字元的轉義

 

- (NSString *)encodeToPercentEscapeString: (NSString *) input  {      // Encode all the reserved characters, per RFC 3986      // (<http://www.ietf.org/rfc/rfc3986.txt>)      NSString *outputStr = (NSString *)       CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,                                              (CFStringRef)input,                                              NULL,                                              (CFStringRef)@"!*‘();:@&=+$,/?%#[]",                                              kCFStringEncodingUTF8);      return outputStr;  }    - (NSString *)decodeFromPercentEscapeString: (NSString *) input  {      NSMutableString *outputStr = [NSMutableString stringWithString:input];      [outputStr replaceOccurrencesOfString:@"+"                                 withString:@" "                                    options:NSLiteralSearch                                      range:NSMakeRange(0, [outputStr length])];        return [outputStr stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];  }  

 

測試代碼

NSString * testUrl      = @"http://search.google.com?keywords=($# it‘s {a*123})00!*‘();:@&=+$,/?%#[]";  NSLog(@"original: %@", testUrl);    NSString * encodeStr    = [self encodeToPercentEscapeString:testUrl];  NSLog(@"encoded: %@", encodeStr);    NSString * encodeStr2   = [testUrl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];  NSLog(@"encoded2:%@", encodeStr2);    NSString * decodeStr    = [self decodeFromPercentEscapeString:encodeStr];  NSLog(@"decoded: %@", decodeStr);  

 

 

結果

>> original: http://search.google.com?keywords=($# it‘s {a*123})00!*‘();:@&=+$,/?%#[]  >> encoded:  http%3A%2F%2Fsearch.google.com%3Fkeywords%3D%28%24%23%20it%27s%20%7Ba%2A123%7D%2900%21%2A%27%28%29%3B%3A%40%26%3D%2B%24%2C%2F%3F%25%23%5B%5D  >> encoded2: http://search.google.com?keywords=($%23%20it‘s%20%7Ba*123%7D)00!*‘();:@&=+$,/?%25%23%5B%5D  >> decoded:  http://search.google.com?keywords=($# it‘s {a*123})00!*‘();:@&=+$,/?%#[] 

 

 

轉自:http://blog.csdn.net/kesalin/article/details/6678939

 

iOS下URL編碼

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.