Thursday, September 26, 2013

encode URL

Igy tudunk URL encode-olni egy string-et:

NSString *fullPath = [NSString stringWithFormat:@"www.example.com/find?query=%@", query];
fullPath = [fullPath stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

de ezzel az a baj, hogy a query-ben levo URL karaktereket nem encode-olja. Erre itt van Simon javalata:

NSString * encodedString = (NSString *)CFURLCreateStringByAddingPercentEscapes(
     NULL,
     (CFStringRef)query,
     NULL,
     (CFStringRef)@"!*'();:@&=+$,/?%#[]",
     kCFStringEncodingUTF8 );

utana ezt az encodedString-et hasznalhatjuk a fullPath osszeallitasanal es akkor mar nem is kell a stringByAddingPercentEscapesUsingEncoding-ot meghivni.

Ha ugyanezt ARC-cal akarjuk hasznalni akkor pedig:
NSString *encodedQuery = (__bridge_transfer NSString*)CFURLCreateStringByAddingPercentEscapes(
     NULL,
     (CFStringRef)query,
     NULL,
     (CFStringRef)@"!*'();:@&=+$,/?%#[]",
     kCFStringEncodingUTF8 ); 

Ez viszont nem oldja meg a query-ben elfordulo " encode-olasat.

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.