我的问题类似于这里:
iPhone和GZip
只是,我没有得到任何结果。
我在 PHP 中压缩了数据:
$gztext = gzcompress($text,9);
var_dump(base64_encode($gztext));
并尝试在iOS中解码:
NSString *encodedGzippedString = @"K0ktLlFIzSspqlTQ09MDYTCloKcApWEEGBkaGZuYAAA=";
NSData *decodedGzippedData = [NSData dataByBase64DecodingString:encodedGzippedString];
NSData *unGzippedJsonData = [decodedGzippedData gzipInflate];
if(unGzippedJsonData){
NSString* unGzippedJsonString = [[NSString alloc] initWithData:unGzippedJsonData encoding:NSASCIIStringEncoding];
if(unGzippedJsonString)
NSLog(@"Result: %@", unGzippedJsonString);
else
NSLog(@"string error");
}
else NSLog(@"gzip error");
结果是"gzip 错误"
这按预期工作:
NSString* base64Str = @"eJwrSS0uUShJrQARxSUAKVwFhg==";
NSData* gzData = [NSData dataFromBase64String:base64Str];
NSData* flatData = [gzData gzipInflate];
NSString* result = [NSString stringWithUTF8String:(const char*) flatData.bytes];
使用 NSData+Base64 和 NSData+压缩类别
我的情况是我想解码一个 gzip 文件。按照@sigman的答案,我可以解码 gzip 文件。
例如
NSString * gfile = [documentDirectory stringByAppendingPathComponent:@"randomgzip.c.gz"];
NSData * gdata = [[NSData alloc] initWithContentsOfFile:gfile];
NSData * flatData = [gdata gzipInflate];