iOS Url编解码实现及说明

150 阅读1分钟

// 编码

-(NSString*)URLUTF8EncodingString:(NSString *)urlStr {

    // 1、 iOS7以前使用 stringByAddingPercentEscapesUsingEncoding(已遗弃)

         // 2、注: CFURLCreateStringByAddingPercentEscapes和NSCharacterSet 相反,     /*      NSCharacterSet:当自定义字符集时,是不会被编码。默认系统字符集都要编码      CFURLCreateStringByAddingPercentEscapes:当自定义字符集时,是会被编码。默认系统字符集不编码      */

    // 3、除了@"" 空,全部都会被编码     // NSCharacterSet*characterSet = [NSCharacterSet characterSetWithCharactersInString:@""];

    // 4、[NSCharacterSet URLQueryAllowedCharacterSet] 系统提供的字符集,不需要编译     NSCharacterSet*characterSet = [NSCharacterSet URLQueryAllowedCharacterSet];

    NSString*encodeStr = [urlStr stringByAddingPercentEncodingWithAllowedCharacters:characterSet];

    return encodeStr;

}

// 解码等于nil 或者 等于自己

-(NSString*)URLUTF8DecodingString:(NSString *)urlStr {

    NSString*decodedStr = urlStr;

    while([decodedStr stringByRemovingPercentEncoding] != nil) {

        decodedStr = [decodedStr stringByRemovingPercentEncoding];

    }

    return decodedStr;

}