iOS 開發(fā) url編解碼_encodeURIComponent、decodeURIComponent

【作者前言】:13年入圈,分享些本人工作中遇到的點點滴滴那些事兒,17年剛開始寫博客,高手勿噴!以分享交流為主,歡迎各路豪杰點評改進!

1.應用場景:

鏈接分享場景非常之多,為了更好的保護一些數(shù)據(jù)信息,需要我們進行一些編解碼處理
這里為了能夠跟Web互通,整理了一下。

2.實現(xiàn)目標:

跨平臺url數(shù)據(jù)編解碼互通, 保護數(shù)據(jù)信息安全性

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;
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容