2014-12-12 5 views
-2

내 코드에서 NSURLNSString에서 일부 특수 문자 &이 매개 변수에 포함되어 있으면 인코딩해야합니다.NSURL - 올바른 인코딩 매개 변수

EX : NSString* urlText = @"70.84.58.40/projects/igolf/?TipThumb=GOLF & 58B.jpg&query=some";stringByAddingPercentEscapesUsingEncoding&을 인코딩하지 않습니다 사용

이이 URL에 다른 쿼리로 처리됩니다. 이 경우 NSURL에서 NSString까지 인코딩하는 올바른 형식은 무엇입니까?

+1

가능한 중복 : // 유래. com/questions/705448/iphone-sdk-issue-with 앰퍼샌드 URL 문자열 및/또는 https://stackoverflow.com/questions/2159341/nsstring-method-to-percent-escape-for- url – mittmemo

답변

0

당신은 URL에 대한 귀하의 문자열을 인코딩하는이 정적 도우미 메서드를 사용할 수 있습니다

+ (NSString*)urlEncode:(NSString*)encodingString 
{ 
    return (NSString *)CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(NULL, 
     (CFStringRef)encodingString, 
     NULL, 
     (CFStringRef)@" ", 
     CFStringConvertNSStringEncodingToEncoding(NSUTF8StringEncoding))); 
} 
0

당신은 솔루션이 제공되는이 link을 시도하여 문제를 우회 할 수있는 NSString에 카테고리를 만들 수 있습니다. 여기에 포스트

#import <Foundation/Foundation.h> 
@interface NSString (URLEncoding) 
-(NSString *)urlEncodeUsingEncoding:(NSStringEncoding)encoding; 
@end 

에서 샘플 코드는 그리고 여기 구현의 :

#import "NSString+URLEncoding.h" 
@implementation NSString (URLEncoding) 
-(NSString *)urlEncodeUsingEncoding:(NSStringEncoding)encoding { 
    return (NSString *)CFURLCreateStringByAddingPercentEscapes(NULL, 
       (CFStringRef)self, 
       NULL, 
       (CFStringRef)@"!*'\"();:@&=+$,/?%#[]% ", 
       CFStringConvertNSStringEncodingToEncoding(encoding)); 
} 
@end 

그리고 지금 우리는 단순히이 작업을 수행 할 수 있습니다 HTTPS의

NSString *raw = @"GOLF & 58B.jpg&query=some"; 
NSString *url = [NSString stringWithFormat:@"70.84.58.40/projects/igolf/?TipThumb=%@", 
      [raw urlEncodeUsingEncoding:NSUTF8Encoding]];