用stringByAddingPercentEncodingWithAllowedCharacters取代CFURLCreateStringByAddingPercentEscapes
2016-01-11 16:35
525 查看
在 iOS 程序访问 HTTP 资源时需要对 URL 进行 Encode,比如像拼出来的 http://unmi.cc?p1=%+&sd
f&p2=中文,其中的中文、特殊符号&%和空格都必须进行转译才能正确访问。现在以"?!@#$^&%*+,:;='\"`<>()[]{}/\\| "字符串为例子,用stringByAddingPercentEncodingWithAllowedCharacters取代CFURLCreateStringByAddingPercentEscapes
原字符串为:
CFURLCreateStringByAddingPercentEscapes方法为:
stringByAddingPercentEncodingWithAllowedCharacters方法为:
NSString *charactersToEscape = @"?!@#$^&%*+,:;='\"`<>()[]{}/\\| ";
NSCharacterSet *allowedCharacters = [[NSCharacterSet characterSetWithCharactersInString:charactersToEscape] invertedSet];
NSString *encodedUrl = [url stringByAddingPercentEncodingWithAllowedCharacters:allowedCharacters];
NSLog(@"\n%@\n%@",encodedUrl,encodedString1);
之后获得的字符串为一致的。
f&p2=中文,其中的中文、特殊符号&%和空格都必须进行转译才能正确访问。现在以"?!@#$^&%*+,:;='\"`<>()[]{}/\\| "字符串为例子,用stringByAddingPercentEncodingWithAllowedCharacters取代CFURLCreateStringByAddingPercentEscapes
原字符串为:
<span style="font-family:SimSun;font-size:14px;">NSString *url = @"ertehtt""p://xxdsdscrg?!@#$^&%*+,:;='\"`<>()[]{}/\\| ";</span>
CFURLCreateStringByAddingPercentEscapes方法为:
<span style="font-family:SimSun;font-size:14px;"> CFStringRef encodedCFString = CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (__bridge CFStringRef) url, nil, CFSTR("?!@#$^&%*+,:;='\"`<>()[]{}/\\| "), kCFStringEncodingUTF8); NSString *encodedString1 = [[NSString alloc] initWithString:(__bridge_transfer NSString*) encodedCFString];</span>
stringByAddingPercentEncodingWithAllowedCharacters方法为:
NSString *charactersToEscape = @"?!@#$^&%*+,:;='\"`<>()[]{}/\\| ";
NSCharacterSet *allowedCharacters = [[NSCharacterSet characterSetWithCharactersInString:charactersToEscape] invertedSet];
NSString *encodedUrl = [url stringByAddingPercentEncodingWithAllowedCharacters:allowedCharacters];
NSLog(@"\n%@\n%@",encodedUrl,encodedString1);
之后获得的字符串为一致的。
相关文章推荐
- iOS----Objective-C学习——中文URL编码和解码
- stringByAddingPercentEncodingWithAllowedCharacters和CFURLCreateStringByAddingPercentEscapes的使用
- 贪心算法--哈夫曼编码(java实现 )
- socket网络编程的集中操作
- CC2538之Contiki3.0实验:3-event
- 如何在Mac OS X上安装 Ruby运行环境
- 在vim上实现跳转到定义处的方法
- Hbase原理、基本概念、基本架构
- 基于Selenium2和TestNG的自动化测试
- Android九点图(Nine-Patch)制作及应用
- 自定义圆角图片控件(Xfermode方式)
- VS2012发布网站详细步骤
- 每天一个设计模式: 桥模式(Bridge)
- Android自定义ProgressDialog进度等待框
- PreparedStatement与SQL批处理
- android TouchImageView 初级篇
- 86、交换机安全MAC层攻击配置实验之Static CAM
- 自定义状态栏
- 面试题9:斐波那契数列
- CSS样式随笔总结