Ios 如果编码正确,为什么我无法将此NSData对象转换为字符串?

Ios 如果编码正确,为什么我无法将此NSData对象转换为字符串?,ios,objective-c,Ios,Objective C,生成一个空字符串,是,NSData加载正确 从这里:,它说我需要使用正确的编码 当我转到Information.plist并检查源代码时,它以 NSData *sourceData = [[NSData alloc]initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"Information" ofType:@"plist"]]; NSString *sourceString = [[NSString alloc]init

生成一个空字符串,是,NSData加载正确

从这里:,它说我需要使用正确的编码

当我转到Information.plist并检查源代码时,它以

NSData *sourceData = [[NSData alloc]initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"Information" ofType:@"plist"]];
NSString *sourceString = [[NSString alloc]initWithData:sourceData encoding:NSUTF8StringEncoding];
所以,就我而言,我确实使用了正确的编码。那有什么问题


我并不是真的想阅读信息的内容。p首先我知道我可以通过使用字典、内容、文件等来完成这项工作——我只是想把相应的NSData转换成NSString。

你能把文件放在ftp服务器或公共dropbox上,或者类似的东西吗?我的第一个怀疑是那里有某种腐败。你应该尝试其他编码来检查它是否解决了你的问题,当你打开文件时你正在读取的标签。这只是为了提供信息,文件可以用其他编码。我不确定mac上是否存在此命令,但请尝试:从命令行类型文件-bi yourFile,它将输出文件的编码。您应该记录源数据,查看十六进制表示,以确保正确加载。例如,可能找不到文件;可能不包括在包中;也许在设备和资本化上是不对的;如果是,请查看它是否是有效的NSUTF8StringEncoding,例如,不是标准plist,而是类似于NSKeyedArchiver归档的东西,这是一个bplist,二进制plist。通常plist作为NSDictionary或NSArray对象加载,而不是作为NSString对象加载。这个plist是如何创建的?我很确定,如果您遍历数据的每个字节,用它创建一个字符并将其打包到字符串中,或者简单地记录它,您将发现有无效字符。因此,并不是每个文件都可以通过简单地将数据转换为字符串而变为红色,这种方法意味着将原始数据转换为字符串,而这些数据实际上是由字符串、一个错误字符和操作中断组成的。即使文件看起来是纯文本,也可能有一个二进制头。你确定它不是二进制plist吗?尝试在textedit中从包中打开它,并检查它是否以bplist开头。
<?xml version="1.0" encoding="UTF-8"?>