【问题标题】:What character encoding or file format does NSKeyedArchiver use?NSKeyedArchiver 使用什么字符编码或文件格式?
【发布时间】:2015-11-17 12:48:01
【问题描述】:

我目前正在调查一个据称通过NSKeyedArchiver 存储的文件的解压缩过程中发生的崩溃。崩溃日志包含文件的前 8 个字节(我只包括下面的前 2 个)。

Fatal Exception: NSInvalidArgumentException
*** -[NSKeyedUnarchiver initForReadingWithData:]: incomprehensible archive (0xffffffa6, 0xffffff9e, ...)

我无法使用 ASCII、Base64、UTF8 或 UTF16 将这些字节解码为有用的内容。有谁知道NSKeyedArchiver 使用哪种文件格式和/或字符编码,或者我如何将这些字节解码为人类可读的内容?

【问题讨论】:

  • 也许您无法将其解码为任何合理的事实正是因为它已损坏。
  • @Avi 是的,这可能是正确的。奇怪的是,写入文件的唯一方法是通过NSKeyedArchiver - 至少据我所知。因此,我希望有一种方法可以手动将存档解码为人类可读的内容。
  • 它可能是一个二进制 plist。
  • 确实是二进制plist。您可以在存档文件上使用plutil -p。还有其他选项可以检查完整性。
  • @Avi 谢谢。不幸的是,plutil 命令似乎无法从文件的开头生成人类可读的格式。我只有前几个字节,因为崩溃日志来自 Fabric。

标签: ios nscoding nskeyedarchiver


【解决方案1】:

键控存档存储为二进制 plist。您可以使用plutil 命令行实用程序来打印、验证或操作内容。

【讨论】:

  • 谢谢。不幸的是,plutil 命令似乎无法从文件的开头生成人类可读的格式。我只有前几个字节,因为崩溃日志来自 Fabric。
  • 这确实说明它只是损坏了,因此崩溃了。可以肯定的是,这是一种奇怪的情况。
  • 因为我要求提供文件格式,所以我会给你接受的答案。可惜plutil 在这种情况下对我没有帮助。还是谢谢。
  • plutil 只是将二进制文件转换为 xml 的第一步。然后,您可以(仅)通过 base64 解码器运行数据值以尝试提取一些信息。但您必须在输出中进行一些搜索才能拼凑任何相关信息
猜你喜欢
  • 2011-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-27
  • 1970-01-01
  • 2013-08-31
  • 1970-01-01
相关资源
最近更新 更多