CFURLCreateStringByAddingPercentEscapes, strange behavior?
iphone, objective-c, urlencode
Solution
You are passing the result as the first string to `NSLog` which expects a string with formatting which uses the percent signs. You are essentially filling the string with random data in memory in place of each % escape. To fix this log using an Objective-C object specifier:
NSLog(@"%@", [(NSString *)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,(CFStringRef)str, NULL, CFSTR("!$&'()*+,-./:;=?@_~"), kCFStringEncodingUTF8) autorelease]);
Problem
I am trying to encode a URL, I've never done this before, so I'm confused when not getting the results expected. I'm using `CFURLCreateStringByAddingPercentEscapes` to do this, but whats returning looks nothing like any online URL encoders/decoders e.g. ``` -(void)urlEncodedString{ NSString *str = @"\"Hi!! my name is John. \n What's your's?\""; NSLog([(NSString *)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,(CFStringRef)str, NULL, CFSTR("!$&'()*+,-./:;=?@_~"), kCFStringEncodingUTF8) autorelease]); } ``` I was expecting something like: %5C%22Hi%21%21%20my%20name%20is%20John.%20%5Cn%20What%27s%20your%27s%3F%5C%22 But instead I'm getting: 2i2212yame 0s2ohn3.786691E-27020A2hat º»åå2our 0.0000002 That can't be normal. I've been searching and tried everything, the way I did it apparently should work. Can anyone point me in the right direction?