본문 바로가기

Development/IOS & Mac

[iOS] NSString URLEncoding 하기

iOS에서 제공해주는 


[str stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];


메소드의 경우 문제가 많고 버그도 있다라는 것으로 알려져있다. 한 가지 예시로 이메일 abcd@asbd.com을 Encoding해보면 

결과가 그대로 출력되는 것을 알 수 있다.


위의 방법을 대체 할 수 있는 방법은


@interface NSString (URLEncoding)


-(NSString *)urlEncodeUsingEncoding:(NSStringEncoding)encoding;


@end


@implementation NSString (URLEncoding)


-(NSString *)urlEncodeUsingEncoding:(NSStringEncoding)encoding {

return (NSString *)CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(NULL,

(CFStringRef)self,

NULL,

(CFStringRef)@"!*'\"();:@&=+$,/?%#[]% ",

CFStringConvertNSStringEncodingToEncoding(encoding)));

}


@end


위의 코드를 하나의 클래스 파일로 만들거나 사용할 곳에 삽입한다. 그리고 아래와 같이 사용


[str urlEncodeUsingEncoding:NSUTF8StringEncoding];