blob: b737626ce194b35419b08b22157599ba0d44410d (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
#import "NSString+URLEncoding.h"
@implementation NSString (URLEncoding)
- (NSString*)URLEncodedString
{
NSString* result = (NSString *)CFBridgingRelease(
CFURLCreateStringByAddingPercentEscapes(
kCFAllocatorDefault,
(CFStringRef)self,
CFSTR("#%"), // don't escape these
NULL, // allow escaping these
kCFStringEncodingUTF8
)
);
// we may have a URL with more than one '#' now - which iOS doesn't allow, so escape all but the first one
NSArray *parts = [result componentsSeparatedByString:@"#"];
NSString *finalResult = parts[0];
for (int i=1; i<parts.count; i++) {
NSString *part = [parts objectAtIndex:i];
if (i==1) {
finalResult = [finalResult stringByAppendingString:@"#"];
} else {
finalResult = [finalResult stringByAppendingString:@"%23"];
}
finalResult = [finalResult stringByAppendingString:part];
}
return finalResult;
}
@end
|