Вот некоторый код, который я использую для перетаскивания текстового файла в UITextView
с именем textView
.
Поскольку я не всегда могу заранее знать кодировку файла, я использую метод -stringWithContentsOfFile:usedEncoding:error:
, в котором хранится значение кодировки по ссылке.
Получив кодировку, я открываю файл и, в случае ошибки, распечатываю некоторую информацию:
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;
На iPhone , если файл имеет кодировку UTF8, текстовое представление правильно отображает содержимое файла.
На iPhone , если файл закодирован в ASCII(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
Для NSASCIIStringEncoding
я должен получить значение 1, а не 805298632.
Поворот таков, если я открою файл с помощью симулятора , я получу правильное значение кодировки, и текстовое представление отобразит содержимое файла в кодировке ASCII.
Я думаю, что у меня правильный синтаксис, но я предполагаюЯ что-то пропустил, возможно, очевидно.Что я здесь не так делаю?