0

I have this URL: http://google.com and I urlencode it using this:

NSArray *escapeChars = [NSArray arrayWithObjects:@";" , @"/" , @"?" , @":" , @"@" , @"&" , @"=" , @"+" , @"$" , @"," , @"[" , @"]", @"#", @"!", @"'", @"(", @")", @"*", nil]; NSArray *replaceChars = [NSArray arrayWithObjects:@"%3B" , @"%2F" , @"%3F" , @"%3A" , @"%40" , @"%26" , @"%3D" , @"%2B" , @"%24" , @"%2C" , @"%5B" , @"%5D", @"%23", @"%21", @"%27", @"%28", @"%29", @"%2A", nil]; int len = [escapeChars count]; NSMutableString *temp = url; int i; for(i = 0; i < len; i++) { [temp replaceOccurrencesOfString: [escapeChars objectAtIndex:i] withString:[replaceChars objectAtIndex:i] options:NSLiteralSearch range:NSMakeRange(0, [temp length])]; } return temp; 

here is the encoded String I get:http0X1.D49C41C5D49CP-5700.0000000.000000google.com

How can that happen?

2
  • have you tried stringByAddingPercentEscapesUsingEncoding: Commented Feb 4, 2013 at 14:49
  • 1
    yes, does give me the original string! Commented Feb 4, 2013 at 15:04

1 Answer 1

1

Here's category for URL encoding:

NSString+URLEncoding.h

#import <Foundation/Foundation.h> @interface NSString (URLEncoding) - (NSString *)urlEncodeUsingEncoding:(NSStringEncoding)encoding; @end 

NSString+URLEncoding.m

#import "NSString+URLEncoding.h" @implementation NSString (URLEncoding) - (NSString *)urlEncodeUsingEncoding:(NSStringEncoding)encoding { return (__bridge NSString *)CFURLCreateStringByAddingPercentEscapes(NULL, (CFStringRef)self, NULL, (CFStringRef)@"!*'\"();:@&=+$,/?%#[]% ", CFStringConvertNSStringEncodingToEncoding(encoding)); } @end 

Usage:

NSString *urlText = @"http://google.com"; NSString *encodedUrlText = [urlText urlEncodeUsingEncoding:NSUTF8StringEncoding]; 
Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.