美文网首页iOS
Base64与百分号编码相关 - iOS

Base64与百分号编码相关 - iOS

作者: survivorsfyh | 来源:发表于2018-01-16 14:59 被阅读130次

    一. Base64 编码

    Base64 是许多 web 协议的标准,在日常开发中很多地方会需要利用 Base64 进行编解码的操作;

    在相互转换操作的时候,可以借用 NSData 来执行,例如接口中提供的如下方法:

    其中第一个方法用来编码时操作,官方大致意思为将一个字符串(NSString)类型的参数通过编码后转换为 NSData 类型,若所输入的数据未能被识别为有效 Base-64 时,则返回 nil.

    第二个方法是将 NSData 类型数据通过 Base-64 的方式解码为字符串类型参数.

    具体使用方式 code 如下:

    1.Data 转 String

    NSData *data = [[NSData alloc] initWithBase64EncodedString:@"Encoded String"

                                                                                                 options:0];//编码

    NSString *decodeStr = [data base64EncodedStringWithOptions:0];//解码

    NSLog(@"data --- %@/n decodeStr --- %@", data, decodeStr);

    2.字符串与 Data 间相互转换

    NSString *encodeStr = @"Encode String Test";

    NSData *encodeData = [[encodeStr dataUsingEncoding:NSUTF8StringEncoding] base64EncodedDataWithOptions:0];// 编码

    NSData *decodeData = [[NSData alloc] initWithBase64EncodedData:encodeData

                                                                                                             options:0];// 解码

    NSString *decodeStr = [[NSString alloc] initWithData:decodeData

                                                                              encoding:NSUTF8StringEncoding];// Data 转 String

    NSLog(@"编码:\n%@解码:\n%@Data to change String:\n%@", encodeData, decodeData, decodeStr);


    二.百分号编码

    百分号编码对 web 协议也很重要,尤其是对 URL 的处理上;

    其中官方 API 提供的接口方法如下:

    其中,第二项为将输入的字符串内容通过百分号编码序列后生成一个编码后的新字符串;

    第一项与第二项类似,同样是将输入的字符串内容通过百分号编码序列的方式编码后生成一个新的字符串,但该方法允许开发者控制需要百分号编码的字符,目的是成一个 URL 字符串编码组件或子组件,而不是整个 URL 字符串.在7位 ASCII 范围外的任何字符被忽略.

    具体使用方式 code 如下:

    NSString *testStr = @"Percent Test";

    NSString *encodStr = [testStr stringByRemovingPercentEncoding];// 编码

    NSString *encodCharacters = [testStr stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];// 编码并控制所需百分号编码的字符

    NSLog(@"%@%@", encodStr, encodCharacters);

    打印结果如下:

    相关文章

      网友评论

        本文标题:Base64与百分号编码相关 - iOS

        本文链接:https://www.haomeiwen.com/subject/efvsoxtx.html