iOS 开发 url编解码_encodeURIComponent
2022-03-10 本文已影响0人
iOS_PM_WEB_尛鹏
【作者前言】:13年入圈,分享些本人工作中遇到的点点滴滴那些事儿,17年刚开始写博客,高手勿喷!以分享交流为主,欢迎各路豪杰点评改进!
1.应用场景:
链接分享场景非常之多,为了更好的保护一些数据信息,需要我们进行一些编解码处理
这里为了能够跟Web互通,整理了一下。
2.实现目标:
跨平台url数据编解码互通, 保护数据信息安全性
3.代码说明:
① url encodeURIComponent 编码
//MARK: - encodeURIComponent:
/**
* @brief url编码处理
* @param urlStr - 待编码的链接字符串
* @return 编码完成后的链接字符串
*/
+ (NSString *)yp_encodeURIComponent:(NSString *)urlStr{
NSString *encodedUrl = nil;
if (@available(iOS 9.0, *)) {
NSMutableCharacterSet *set = [NSMutableCharacterSet new];
[set formUnionWithCharacterSet:([NSMutableCharacterSet alphanumericCharacterSet])];
[set formUnionWithCharacterSet:([NSMutableCharacterSet characterSetWithCharactersInString:@"-_.!~*'()"])];
encodedUrl = [urlStr stringByAddingPercentEncodingWithAllowedCharacters:set];
}else {
encodedUrl = (NSString *) CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (CFStringRef)urlStr, NULL, (CFStringRef)@"!*'();:@&=+$,/?%#[]", kCFStringEncodingUTF8));
}
return encodedUrl;
}
② URL decodeURIComponent 解码
//MARK: - decodeURIComponent:
/**
* @brief url 解码处理
* @param urlStr - 待解码的链接字符串
* @return 解码完成后的链接字符串
*/
+ (NSString *)yp_decodeURIComponent:(NSString *)urlStr {
NSString *decodedUrl = nil;
if (@available(iOS 9.0, *)) {// 当前版本 >= 9.0 可用
decodedUrl = [urlStr stringByRemovingPercentEncoding];
}else {
decodedUrl = (__bridge_transfer NSString *)CFURLCreateStringByReplacingPercentEscapesUsingEncoding(kCFAllocatorDefault, (__bridge CFStringRef)urlStr, CFSTR(""), CFStringConvertNSStringEncodingToEncoding(NSUTF8StringEncoding));
}
return decodedUrl;
}