stringWithContentsOfFile:usedEncoding:error:不起作用

时间:2011-02-09 11:23:02

标签: objective-c ios4

我正在尝试导入由filemaker创建的csv,并使用iTunes文件共享将其复制到我的设备上。我坚持应该是一个直截了当的步骤。我只是看不出我出错的地方。尝试了替代方法并设置了UTF8编码。还尝试从filemaker导出为xml UTF8,并尝试从手机中删除该应用程序并重新运行。即使我指定它,它似乎也不会读取编码。以下代码为我提供了此控制台输出。

文件存在 导入(null)错误域= NSCocoaErrorDomain代码= 264“操作无法完成。(可可错误264。)”

-(void)importDatabase {
NSString *importString;
NSError *error;
NSString *documentsDirectoryPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
if ([[NSFileManager defaultManager] fileExistsAtPath:[documentsDirectoryPath stringByAppendingString:@"/iPhone.csv"]]) {
    NSLog(@" File exists");
    NSStringEncoding encoding;
    importString = [NSString stringWithContentsOfFile:[documentsDirectoryPath stringByAppendingString:@"/iPhone.csv"] usedEncoding:&encoding error:&error];
NSLog(@"Import %@ %@ ",importString, error);
} else {
    NSLog(@" File doesn't exist");
}

}

3 个答案:

答案 0 :(得分:7)

从标题:

NSFileReadUnknownStringEncodingError = 264,         // Read error (string encoding of file contents could not be determined)

尝试告诉Foundation编码是什么,因为您知道编码是什么。

importString = [NSString stringWithContentsOfFile: blah encoding: NSUTF8StringEncoding error: &error];

答案 1 :(得分:0)

我遇到了类似的问题,结果发现该文件是在一些奇怪的代码页(大于128个字符)中编码的,而不是UTF-8。最后,我从未弄清楚它最初是如何编码的......

答案 2 :(得分:-9)

我想你刚忘了 [NSString alloc] ,因为这对我有用:

NSString *fileComponents = [[NSString alloc] initWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil];