2011-08-16 2 views
1

사용자가 텍스트 상자에 입력 할 수있는 텍스트 인 인수가있는 iphone-application에서 요청을 보냅니다. 따라서 HTML 인코딩해야합니다. 당신이 볼 수 있듯이, 단지 공간이 인수의 앰퍼샌드 과거 서버 무시 모든 것을 만들고, 인코딩StringByAddingPercentEscapes가 앰퍼샌드, 물음표 등에서 작동하지 않습니다.

NSLog(@"%@", testText); // Test & ? 
testText = [testText stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 
NSLog(@"%@", testText); // Test%20&%20? 

:

는 여기에 내가 실행 해요 문제입니다.

stringByAddingPercentEscapes의 광고 된 동작입니까? 모든 특수 문자를 해당 16 진 코드로 수동으로 바꾸어야합니까?

모든 공헌에 감사드립니다.

+0

및과를 사용하여 내 쿼리 문자열 매개 변수를 인코딩? url에서 유효합니다. – malinois

답변

1

유효한 URL 문자이기 때문에 인코딩되지 않습니다. stringByAddingPercentEscapesUsingEncoding:에 대한
문서는 더 복잡한 변환을 위해

참조 CFURLCreateStringByAddingPercentEscapes을 말한다.

나는 (A NSString 카테고리에 추가) 다음의 방법

- (NSString *)urlEncodedString { 
    CFStringRef buffer = CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, 
                   (CFStringRef)self, 
                   NULL, 
                   CFSTR("!*'();:@&=+$,/?%#[]"), 
                   kCFStringEncodingUTF8); 
    NSString *result = [NSString stringWithString:(NSString *)buffer]; 
    CFRelease(buffer); 

    return result; 
}