處理方式很簡單:
- (NSString*)urlEncode:(NSString*)urlString {
#pragma clang diagnostic push
#pragma clang diagnostic ignored"-Wdeprecated-declarations"
NSString *encodedString = (NSString *)CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,
(CFStringRef)urlString,
(CFStringRef)@"!$&'()*+,-./:;=?@_~%#[]",
NULL,
kCFStringEncodingUTF8));
returnencodedString;
#pragma clang diagnostic pop
}
- (NSString*)urlDecode:(NSString*)urlString? {
#pragma clang diagnostic push
#pragma clang diagnostic ignored"-Wdeprecated-declarations"
CFStringEncoding en = CFStringConvertNSStringEncodingToEncoding(NSUTF8StringEncoding);
NSString *decoded = [urlString stringByReplacingOccurrencesOfString:@"+"
withString:@" "];
decoded = (__bridge_transferNSString*)
CFURLCreateStringByReplacingPercentEscapesUsingEncoding(
NULL,
(__bridgeCFStringRef)decoded,
CFSTR(""),
en);
returndecoded;
#pragma clang diagnostic pop
}
對需要編碼處理的URL進行編碼處理即可,例子如下:
NSString *urlStr = @"/cashier-static/h5/cashier?systemCode=10007&sceneCode=10025&sign=ed37f0a3a541af5aa11cd273c65f2e44&partnerOrderCode=Z1007876566test&payTypeCode=TC0036&payMethodCode=10002&recipientName=中通快遞&platform=txkdg";
?NSString*encodeString = [self urlEncode:urlStr];
NSLog(@"編碼encodeString===%@",encodeString);
打印結果為: /cashier-static/h5/cashier?systemCode=10007&sceneCode=10025&sign=ed37f0a3a541af5aa11cd273c65f2e44&partnerOrderCode=Z1007876566test&payTypeCode=TC0036&payMethodCode=10002&recipientName=%E4%B8%AD%E9%80%9A%E5%BF%AB%E9%80%92&platform=txkdg
需要解碼回中文的話字節調用解碼方法即可。