【发布时间】:2014-08-27 07:18:22
【问题描述】:
正如标题所说,我正在使用GZip 来压缩和解压缩字符串。但是在这之间我想读取压缩字符串,我如何读取那个未知的压缩字符串?。
到目前为止我尝试了什么:
使用GZip(from github),我尝试压缩字符串如下...
//UML 字符串
NSString *plantUmlString = @"@startuml\n Bob -> Alice : hello \n@enduml"
字符串压缩...
NSData *originalData = [plantUmlString dataUsingEncoding:NSASCIIStringEncoding];
NSString *compressedString = [[originalData gzippedData] base64EncodedStringWithOptions:kNilOptions];
NSLog(@"%@", compressedString);//H4sIAAAAAAAAA8tIzcnJV0gvrSwuKcrMSw8tBhKuecn5KQCRj54cGQAAAA
我在哪里挣扎:
compressedString 正在返回“H4sIAAAAAAAAAA8tIzcnJV0gvrSwuKcrMSw8tBhKuecn5KQCRj54cGQAAAA” 而不是“SzIrIxBAICt9oGS0”,这是我应该得到的实际字符串。如果我解码生成的compressedString,我得到nill......如果我使用UTF-8编码我得到 "null"..如何在这里读取实际字符串?
注意:如果我解压缩上述压缩数据,我会在压缩之前得到原始字符串...
NSData *decodedData = [[NSData alloc] initWithBase64EncodedString:compressedString options:0];
NSString *decompressedString=[[NSString alloc] initWithData:[decodedData gunzippedData] encoding:NSASCIIStringEncoding];
NSLog(@"%@",decompressedString);
//更正:decompressedString 将压缩前的原始字符串返回给我...
我要做什么:
尝试使用PlantUML Server 生成流程图,它接受压缩的 UML 字符串并返回流程图图像...
更多信息:如果我在 android 中压缩上述 UML 字符串(在 github 中可用),我将得到“SzIrIxBAICt9oGS0”作为字符串......但是在 Objective-C 中,我正在阅读完全不同的字符串...
我是在用编码做些什么吗?...任何建议/解决方案都非常有帮助...
【问题讨论】:
-
在 GitHub 中,它说它有不同的压缩级别,使用
gzippedDataWithCompressionLevel:,而gzippedData将使用“默认”级别。也许这就是问题所在。
标签: ios objective-c nsstring gzip nsdata