-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 回答