1.本編解碼方法的功能說明
-
UrlEncode方法
把任何參數(shù)轉(zhuǎn)換成適合放在URL中的字符串穷当。具體規(guī)則:
- 字母昔善,數(shù)字,連字符不變炒瘸。
- 空格轉(zhuǎn)換成加號(hào)淤堵。
- 其他所有的字符轉(zhuǎn)換成用百分號(hào)表示,并接上字符的兩位十六進(jìn)制編碼顷扩。如%2F
-
UrlDecode方法
其功能與編碼相反
2. 字符串在編碼之前之后的效果
原字符串:
Vk/nQmguwJIN
編碼之后:
Vk%2FnQmguwJIN
解碼之后:
Vk/nQmguwJIN
3.UrlEncode/UrlDecode方法的實(shí)現(xiàn)
編碼
+(NSString*)encodeString:(NSString*)unencodedString{
// CharactersToBeEscaped = @":/?&=;+!@#$()~',*";
// CharactersToLeaveUnescaped = @"[].";
NSString *encodedString = (NSString *)CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,
(CFStringRef)unencodedString,
NULL,
(CFStringRef)@"!*'();:@&=+$,/?%#[]",
kCFStringEncodingUTF8));
return encodedString;
}
解碼
//URLDEcode
+(NSString *)decodeString:(NSString*)encodedString
{
//NSString *decodedString = [encodedString stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding ];
NSString *decodedString = (__bridge_transfer NSString *)CFURLCreateStringByReplacingPercentEscapesUsingEncoding(NULL,(__bridge CFStringRef)encodedString,CFSTR(""),CFStringConvertNSStringEncodingToEncoding(NSUTF8StringEncoding));
return decodedString;
}
4.使用建議
建議自己寫個(gè)Category拐邪。比如,可以基于NSString新建一個(gè)URLEncoding類別文件隘截,類名分別為NSString+URLEncoding.h和NSString+URLEncoding.m扎阶。然后汹胃,在你需要的地方導(dǎo)入該頭文件即可。作為對(duì)比东臀,與上面的實(shí)現(xiàn)不同着饥,下面采用replaceOccurrencesOfString:方法實(shí)現(xiàn)解碼功能。
其中:
NSString+URLEncoding.h
#import <Foundation/Foundation.h>
@interface NSString (URLEncoding)
// 字符串轉(zhuǎn)碼
- (NSString*)urlEncodeString;
// 反URL編碼
- (NSString *)decodeFromPercentEscapeString;
@end
NSString+URLEncoding.m
#import "NSString+URLEncoding.h"
@implementation NSString (URLEncoding)
// 字符串編碼
- (NSString *)urlEncodeString
{
NSString *result = (NSString *)CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (CFStringRef)self, NULL, CFSTR(":/?#[]@!$&’(){}<>*+,;="),kCFStringEncodingUTF8));
return result;
}
// 反URL編碼
- (NSString *)decodeFromPercentEscapeString
{
NSMutableString *outputStr = [NSMutableString stringWithString:self];
[outputStr replaceOccurrencesOfString:@"+"
withString:@" "
options:NSLiteralSearch
range:NSMakeRange(0, [outputStr length])];
return [outputStr stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
}
5. 調(diào)用范例
在調(diào)用處的類中
#import "NSString+URLEncoding.h"
然后惰赋,調(diào)用上述方法:
[testStr urlEncodeString];
即可宰掉。