如何解决有关编码的错误?

时间:2013-09-16 10:03:35

标签: objective-c

NSString *path =[[NSBundle mainBundle]pathForResource:@"1025626909" ofType:@"txt"];
NSStringEncoding enc;
NSError *error;
NSString *pageSource = [[NSString alloc] initWithContentsOfFile:path usedEncoding:&enc error:&error];
NSLog(@"==%@",pageSource);
NSLog(@"==%@",[error description]);

上面的代码输出:

2013-09-16 17:40:08.843 encodingTest[3350:c07] ==(null)
2013-09-16 17:40:08.846 encodingTest[3350:c07] ==Error Domain=NSCocoaErrorDomain Code=264 "The operation couldn’t be completed. (Cocoa error 264.)" UserInfo=0x71a5af0 {NSFilePath=/Users/dayu/Library/Application Support/iPhone Simulator/6.1/Applications/A33DE8D6-D64B-4791-ADB6-1AB4B35B743A/encodingTest.app/1025626909.txt  

我无法得到txt文件的内容,希望超人来帮帮我.....

我通过其他方式找到我发现此文件编码的文件是GB2312,然后我使用了kCFStringEncodingGB_2312_80代码。没有效果......

3 个答案:

答案 0 :(得分:4)

错误264表示NSString无法确定文件的编码;因此需要告诉编码是什么,可能是UTF-8:

NSString *pageSource = [[NSString alloc] initWithContentsOfFile:path
                                                       encoding:NSUTF8StringEncoding
                                                          error:&error];

为了找到我在FoundationErrors.h中看到的错误264的意思:

NSFileReadUnknownStringEncodingError NS_ENUM_AVAILABLE(10_5, 2_0) = 264, // Read error (string encoding of file contents could not be determined)

我使用find命令在我的Xcode应用内容中找到了它:

$ cd /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform
$ find . -name \*.h -exec fgrep -l 264 {} \;
./Developer/SDKs/iPhoneOS6.1.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVAssetExportSession.h
(lots of others deleted)
./Developer/SDKs/iPhoneOS6.1.sdk/System/Library/Frameworks/Foundation.framework/Headers/FoundationErrors.h

答案 1 :(得分:0)

我认为问题是usedEncoding的参数可能使用NSUTF8StringEncoding,那么你可能会得到txt文件的内容。

答案 2 :(得分:0)

让我告诉为什么...因为我希望NSLog一次txt文件的所有内容。总是返回null。所以我拿了txt文件的一小部分,然后我得到了正确的内容......你知道,当我看到这个结果时,我很高兴。
NSStringEncoding enc2 = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000);  NSString * textFile = [NSString stringWithContentsOfFile:path encoding:enc2 error:& error];