2012-01-14 5 views
0

IOS5 아래의 objective-c에서 매우 간단한 작업을 만들고 싶습니다. URL 문자열을 이스케이프 처리 된 표현으로 변환합니다.객관적인 -c에서 URL 문자열 이스케이프 표현? ("퍼센트 인코딩")

나는 그것을하는 많은 방법을 시도했다. 그러나 어느 쪽도 일하는 것처럼 보였다.

stringByAddingPercentEscapesUsingEncoding : NSASCIIStringEncoding 작업을 수행 할 수 없습니다. 그것은 편지를 áíűüööúóé와 같이 변환하지만 다른 사람은 =와 같이 변환하지 않습니다.

.net에서 Uri.EscapeDataString (http://msdn.microsoft.com/en-us/library/system.uri.escapedatastring.aspx)과 같은 기능을 사용하고 싶습니다.

감사합니다.

답변

1

당신은

- (NSString *)ps_stringByAddingPercentEscapes; 
{ 
    return [(NSString *)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, 
                   (CFStringRef)self, 
                   NULL, 
                   (CFStringRef)@":/?#[]@!$&’()*+,;=", 
                   kCFStringEncodingUTF8) autorelease]; 
} 

같은 관심있는 문자에 대한 @":/?#[]@!$&’()*+,;=" 교체를 수행하는 NSString에 카테고리를 추가 할 수 있습니다.

+0

정말 놀랍습니다 ... 나는 그것이 프레임 워크에 포함되어야하는 매우 단순하고 기본적인 기능이라고 생각했습니다. O – Tom

+0

입니다! CFURLCreateStringByAddingPercentEscapes는 OS 프레임 워크의 일부입니다. – StilesCrisis

+0

@StilesCrisis 나는 그가 재단의 일부가 될 것이라고 생각했다. CoreFoundation으로 떨어지는 것은 이상한 것처럼 보입니다. Docs는'더 복잡한 변환을 위해 See CFURLCreateStringByReplacingPercentEscapes를 보았습니다 .'하지만 NSSCIIStringEncoding이 아직 그것을 커버하지 못하는 이유가 확실하지 않습니다. –