二进制数据到字符串转换问题

时间:2014-06-05 11:41:11

标签: ios objective-c core-data nsstring binary-data

我无法将二进制数据(某些文字)转换回字符串。

原始文本来自JSON提要,然后转换为二进制数据以在CoreData中存储(具有正确的格式)。我的问题是从CoreData中取回它。当我尝试使用以下内容转换它时:NSString *howToString = [[NSString alloc]initWithBytes:[dish.dishMainText bytes] length:[dish.dishMainText length] encoding:NSASCIIStringEncoding];我得到以下内容:

    bplist00‘T$topX$objectsX$versionY$archiver—TrootÄ¢   
U$nulloÚ1 kage



R¯r sukker, kakao og vanillekorn i sm¯rret. Pisk Êggene i et ad gangen, og tilsÊt til sidst melet. Fordel dejen i en smurt form p 24 cm. Bag kagen i ca. 20 minutter nederst i ovnen ved 175∞. 



Giv piskefl¯de og sm¯r et lille opkog. TilsÊt appelsinskal og chokolade, og lad den smelte ved lav temperatur. R¯r rundt i blandingen. HÊld chokoladeblandingen i en skÂl og sÊt den koldt. Fordel den faste tr¯ffelmasse ud over den afk¯lede kage.  



Server evt. kagen pyntet med blandede bÊr.܆_NSKeyedArchiver(25:<?E-2
D

正如您所看到的,在开头和结尾都有一些未正确转换的文本。我尝试过不同形式的编码(UTF,Latin1 / 2等),但似乎没有任何效果。这是迄今为止我能够产生的最好结果,但它显然不能令人满意。

如果需要更多代码,请告诉我。

提前致谢 克里斯

2 个答案:

答案 0 :(得分:0)

数据开头的bplist00文本表明您的数据实际上是二进制plist,而不是简单的编码字符串。尝试使用NSPropertyListSerialization解码您的数据。

答案 1 :(得分:0)

这是一个键控存档,它是属性列表的一种子类。它是您应用中的序列化对象图。你可以像这样取消归档:

id rootObject = [NSKeyedUnarchiver unarchiveObjectWithData:[dish.dishMainText bytes]];

请注意,结果 - 假设数据是从您的应用程序存档的,并且它是有效的存档 - 是一个对象图,而不是字符串。