首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用编码+ (%2B)创建NSURL

使用编码+ (%2B)创建NSURL
EN

Stack Overflow用户
提问于 2009-05-22 15:30:52
回答 7查看 9.8K关注 0票数 11

我需要在GET请求中传递带有时区偏移的时间戳,例如,

2009-05-04T11:22:00+01:00

这看起来像是接收PHP脚本的两个参数"2009-05-04T11:22:00“和"01:00”(我无法控制)。

NSURL不编码加符号,但如果我使用字符串创建NSURL

2009-05-04T11:22:00%2B01:00

我最终得到的url包含:

2009-05-04T11:22:00%252B01:00

有什么想法,我可以如何保存我的编码加符号,或只是简单,防止NSURL编码任何东西?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2010-02-15 22:00:28

对我起作用的是执行UTF8转换,然后用%2B替换+符号:

代码语言:javascript
复制
NSString *urlString =
    [NSString stringWithFormat:@"%@/iphone/push/create?pn[token]=%@&pn[send_at]=%@",
     kHTTPURL, appDelegate.deviceAPNToken, [dateTimeToUse description]];

urlString =
    [[urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]
     stringByReplacingOccurrencesOfString:@"+" withString:@"%2B"];
票数 13
EN

Stack Overflow用户

发布于 2013-06-18 05:22:20

字符串应该是URL编码的。

下面是NSString的一个类别,它将有助于:

NSString+Additions.h

代码语言:javascript
复制
@interface NSString (Additions)

- (NSString *)stringByURLEncoding;

NSString+Additions.m

代码语言:javascript
复制
#import "NSString+Additions.h"

@implementation NSString (Additions)

- (NSString *)stringByURLEncoding {
    return (__bridge NSString *)CFURLCreateStringByAddingPercentEscapes(NULL,
                                                           (CFStringRef)self,
                                                           NULL,
                                                           (CFStringRef)@"!*'\"();:@&=+$,/?%#[]% ",
                                                           CFStringConvertNSStringEncodingToEncoding(NSUTF8StringEncoding));
}
票数 3
EN

Stack Overflow用户

发布于 2009-05-22 16:39:41

对要作为参数包含的文本使用NSStringstringByAddingPercentEscapesUsingEncoding:方法。

顾名思义,该方法将返回一个自动释放的字符串,其中包含接收方的url安全版本。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/898488

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档