您的位置:首页 > 其它

NSString自带的的方法URL encoding的编码问题

2013-06-19 15:24 267 查看
NSString *password = @"Top+Secret. ";NSString *encoded_normal = [password stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];NSString *encoded_safer = (NSString *)CFURLCreateStringByAddingPercentEscapes(NULL,  (CFStringRef)password,  NULL,  (CFStringRef)@"!*'();:@&=+$,/?%#[]",  kCFStringEncodingUTF8);// output with %@ otherwise the % escapes cause strange outputNSLog(@"%@", password);NSLog(@"%@", encoded_normal);NSLog(@"%@", encoded_safer);
通过输出情况看,用stringByAddingPercentEscapesUsingEncoding:方法编码时,+号没有编码,存在不encode的情况
[/code]
推荐使用CFURLCreateStringByAddingPercentEscapes()
下面是一个给NSString添加的类别,来实现encode[/code]
#import@interface NSString (Helpers)// helper functions- (NSString *) stringByUrlEncoding;@end
#import "NSString+Helpers.h"@implementation NSString (Helpers)#pragma mark Helpers- (NSString *) stringByUrlEncoding{return (NSString *)CFURLCreateStringByAddingPercentEscapes(NULL,  (CFStringRef)self,  NULL,  (CFStringRef)@"!*'();:@&=+$,/?%#[]",  kCFStringEncodingUTF8);}

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: