如何在 iOS 字符串中禁用或绕过 Base64 图像 url 数据的转义序列

Posted

技术标签:

【中文标题】如何在 iOS 字符串中禁用或绕过 Base64 图像 url 数据的转义序列【英文标题】:How to disable or bypass escape sequence in iOS string for Base64 Image url data 【发布时间】:2013-03-23 10:10:37 【问题描述】:

我正在从我的服务器的 json 请求中接收 base64 字符串... base64 字符串如下所示: “/9j/4AAQSkZJRgABAQAAAQABAAD//gA7Q1J...”(缩短得很好)

现在我的问题是,当我从 NSString > NSURL 转过来时,反斜杠会从字符串中转义... "/9j/4AAQSkZJRgABAQAAAQABAAD//gA7Q1J"

即“/”变成了“/” 现在我很确定这是我对 UIImage 问题的编码问题(通过以下方法:NSString -> NSURL -> NSData -> UIImage)

创建 UIImage 的代码:

    imageAllArray = [pathwayResults valueForKey:@"images_data_base64"];  
    NSURL *image2URL = [NSURL URLWithString:[imageAllArray objectAtIndex:1]];  
    NSData *image2Data = [NSData dataWithContentsOfURL:image2URL];  
    imageTwo = [UIImage imageWithData:image2Data];

有没有人知道一种方法来确保反斜杠保留在要转换的字符串中?

或者还有其他/更简单的方法可以解决这个问题吗?

【问题讨论】:

【参考方案1】:
NSString *encodedString = [@"your string" stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

【讨论】:

【参考方案2】:

我发现反斜杠根本没有造成太大的危害,这是因为我忘记在字符串前面加上:“data:image/png;base64”

见下文:

        NSString *prepender = @"data:image/png;base64,";
        NSString *image1String = [NSString stringWithFormat:@"%@%@", prepender, [pathwayImageArray objectAtIndex:0]];
        NSURL *image1URL = [NSURL URLWithString:image1String];
        NSData *image1Data = [NSData dataWithContentsOfURL:image1URL];
        imageOne = [UIImage imageWithData:image1Data]; 

希望这对其他人有帮助!

【讨论】:

以上是关于如何在 iOS 字符串中禁用或绕过 Base64 图像 url 数据的转义序列的主要内容,如果未能解决你的问题,请参考以下文章

如何绕过 IE8 32k 数据限制:base64 编码上的 uri?

如何在IOS中将视频文件转换为Base64字符串?

在 iOS 上使用 Phonegap 将图像转换为 Base64 字符串

如何在 ios 中将 Base64 编码的 NSString 转换为字节数组(Java)?

如何仅使用 JavaScript 将 base64 编码的图像数据上传到 S3?

iOS Base64加密