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代码。没有效果......
答案 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];