gzencode php到objective c nsdata

时间:2012-05-02 01:49:39

标签: php objective-c gzip

我的问题与此类似:

iPhone and 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错误”

2 个答案:

答案 0 :(得分:1)

这可以按预期工作:

NSString* base64Str = @"eJwrSS0uUShJrQARxSUAKVwFhg==";
NSData* gzData = [NSData dataFromBase64String:base64Str];
NSData* flatData = [gzData gzipInflate];
NSString* result = [NSString stringWithUTF8String:(const char*) flatData.bytes];

使用NSData+Base64NSData+Compression类别

答案 1 :(得分:0)

我的情况是我想解码一个gzip文件。按照@sigman的回答,我可以解码gzip文件。
例如,   NSString * gfile = [documentDirectory stringByAppendingPathComponent:@"randomgzip.c.gz"]; NSData * gdata = [[NSData alloc] initWithContentsOfFile:gfile]; NSData * flatData = [gdata gzipInflate];