URL encoding方法 cocoa foundation

URL encoding方法 cocoa foundation,第1张

概述文件来源地:http://blog.csdn.net/eqiuno/article/details/7315410 如果你在做基于RESTFul的应用,你肯定需要对传递的参数进行编码。比如你要传递信息是: China,Beijing,Haidian经过URL编码后,这个字串成了 China%20Beijing%20%Haidian 在iOS中你可以通过如下NSString的方法轻松实现URL编码

文件来源地:http://blog.csdn.net/eqiuno/article/details/7315410

如果你在做基于RESTFul的应用,你肯定需要对传递的参数进行编码。比如你要传递信息是:


China,Beijing,HaIDian经过URL编码后,这个字串成了


China%20Beijing%20%HaIDian
在iOS中你可以通过如下Nsstring的方法轻松实现URL编码


stringByAddingPercentEscapesUsingEnCoding:NSUTF8StringEnCoding
 
相应的,你可以通过下面的方法还原字串:


stringByReplacingPercentEscapesUsingEnCoding:NSUTF8StringEnCoding下面是个完整的例子:


Nsstring *rawText = @"One broaDWay,CambrIDge,MA";
 
Nsstring *encodedText = [rawText stringByAddingPercentEscapesUsingEnCoding:NSUTF8StringEnCoding];
NSLog(@"Encoded text: %@",encodedText);
Nsstring *decodedText = [encodedText stringByReplacingPercentEscapesUsingEnCoding:NSUTF8StringEnCoding];
NSLog(@"Original text: %@",decodedText);
输出是:

Encoded text: One%20broaDWay,%20CambrIDge,%20MA
Original text: One broaDWay,MA截至到现在,一切都很美好,Nsstring可以很好的工作。但是stringByAddingPercentEscapesUsingEnCoding不能处理iOs的保留字比如&和/.

看看这个例子:

Nsstring *rawText = @"bed Bath & Beyond - URL=http://www.bedbathandbeyond.com/";
 
Nsstring *encodedText = [rawText stringByAddingPercentEscapesUsingEnCoding:NSUTF8StringEnCoding];
NSLog(@"Encoded text: %@",decodedText);
输出是:

bed%20Bath%20&%20Beyond%20-%20URL=http://www.bedbathandbeyond.com/
Original text: bed Bath & Beyond – URL=http://www.bedbathandbeyond.com/

注意:&和/没有被编码。

当然这种小问题肯定有解决方案,我们看看Google是怎么做的。先上源码

#import "GTMNsstring+URLArguments.h"
#import "GTMGarbageCollection.h"

@implementation Nsstring (GTMNsstringURLArgumentsAdditions)

- (Nsstring*)gtm_stringByEscaPingForURLArgument {
  // Encode all the reserved characters,per RFC 3986
  // (<http://www.ietf.org/rfc/rfc3986.txt>)
  CFStringRef escaped =
    CFURLCreateStringByAddingPercentEscapes(kcfAllocatorDefault,
                                            (CFStringRef)self,
                                            NulL,
                                            (CFStringRef)@"!*'();:@&=+$,/?%#[]",
                                            kcfStringEnCodingUTF8);
  return GTMCFautorelease(escaped);
}

- (Nsstring*)gtm_stringByUnescaPingFromURLArgument {
  NSMutableString *resultString = [NSMutableString stringWithString:self];
  [resultString replaceOccurrencesOfString:@"+"
                                withString:@" "
                                   options:NSliteralSearch
                                     range:NSMakeRange(0,[resultString length])];
  return [resultString stringByReplacingPercentEscapesUsingEnCoding:NSUTF8StringEnCoding];
}

@end

 


眼熟么这句Nsstring (GTMNsstringURLArgumentsAdditions),这不就是用category给NString添加了一个新的方法么。

如果你把这个文件加入你的工程,好了现在,你的Nsstring类的实例和子类实例就已经有了支持rfc3968标准的编码和解码能力了。cool吧。

总结

以上是内存溢出为你收集整理的URL encoding方法 cocoa foundation全部内容,希望文章能够帮你解决URL encoding方法 cocoa foundation所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1059251.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存