以下是一些代码,用于将文本文件拖入名为UITextView
的{{1}}。
因为我不能总是提前知道文件的编码,所以我使用方法textView
,它通过引用存储编码值。
一旦我进行了编码,然后打开文件,如果出现错误,请打印出一些信息:
-stringWithContentsOfFile:usedEncoding:error:
在iPhone上,如果文件是UTF8编码的,文本视图会正确显示文件的内容。
在iPhone上,如果文件是ASCII编码的(NSError *_error = nil;
NSStringEncoding _textEncoding;
NSString *_contentText = [NSString stringWithContentsOfFile:[baseURL path] usedEncoding:&_textEncoding error:&_error];
if (_error) {
NSLog(@" _error: %@", [_error userInfo]);
NSLog(@" _textEncoding: %d", _textEncoding);
}
textView.text = _contentText;
),那么我会得到一个奇怪的字符串编码值:
NSASCIIStringEncoding
对于2010-07-23 02:57:46.786 App[9160:307] _error: {
NSFilePath = "/var/mobile/Applications/0AD83E02-7A2A-4665-8B8F-17E03EE12B9E/Documents/A+B.txt";
}
2010-07-23 02:57:46.791 App[9160:307] _textEncoding: 805298632
我应该得到值1,而不是805298632。
扭曲是,如果我通过模拟器打开文件,我得到正确的编码值,文本视图显示ASCII编码文件的内容。
我认为我的语法正确,但我想我错过了一些可能很明显的东西。我在这里做错了什么?
答案 0 :(得分:1)
%lx
。 NSStringEncoding
是NSUInteger
,它是设备上的unsigned long
。一些枚举值是十六进制值。 _textEncoding
初始化为0.枚举常量从1开始。