我无法将二进制数据(某些文字)转换回字符串。
原始文本来自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等),但似乎没有任何效果。这是迄今为止我能够产生的最好结果,但它显然不能令人满意。
如果需要更多代码,请告诉我。
提前致谢 克里斯
答案 0 :(得分:0)
数据开头的bplist00
文本表明您的数据实际上是二进制plist,而不是简单的编码字符串。尝试使用NSPropertyListSerialization
解码您的数据。
答案 1 :(得分:0)
这是一个键控存档,它是属性列表的一种子类。它是您应用中的序列化对象图。你可以像这样取消归档:
id rootObject = [NSKeyedUnarchiver unarchiveObjectWithData:[dish.dishMainText bytes]];
请注意,结果 - 假设数据是从您的应用程序存档的,并且它是有效的存档 - 是一个对象图,而不是字符串。