-2

私のコードでは、文字列にパラメーターに特殊文字が含まれている場合にエンコードNSURLを行う必要があります。NSString&

元:NSString* urlText = @"70.84.58.40/projects/igolf/?TipThumb=GOLF & 58B.jpg&query=some";

を使用stringByAddingPercentEscapesUsingEncodingするとエンコードされず&、これは URL の他のクエリとして扱われます。したがって、この場合のエンコードNSURLの正しい形式は何でしょうか。NSString

4

2 に答える 2

0

この静的ヘルパー メソッドを使用して、URL の文字列をエンコードできます。

+ (NSString*)urlEncode:(NSString*)encodingString
{
    return (NSString *)CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(NULL,
       (CFStringRef)encodingString,
       NULL,
       (CFStringRef)@" ",
       CFStringConvertNSStringEncodingToEncoding(NSUTF8StringEncoding)));
}
于 2014-12-12T14:21:35.080 に答える
0

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

そして今、これを簡単に行うことができます:

NSString *raw = @"GOLF & 58B.jpg&query=some";
NSString *url = [NSString stringWithFormat:@"70.84.58.40/projects/igolf/?TipThumb=%@",
            [raw urlEncodeUsingEncoding:NSUTF8Encoding]];
于 2014-12-12T14:21:46.960 に答える