C char * в Objective-C NSString (или NSData?) - PullRequest
2 голосов
/ 24 мая 2011

Я анализирую поток байтов файла в C и объединяю результаты в NSDictionary s и NSArray s в мире Objective-C с помощью обратного вызова.

Все ключи NSDictionary всеэкземпляры NSString.Я преобразую строки символов C в NSString s с помощью NSNEXTSTEPStringEncoding, но время от времени некоторые ключи имеют значение nil (даже если строки символов C содержат один или несколько символов).

Как правильно это сделать?

1 Ответ

4 голосов
/ 24 мая 2011

NSNEXTSTEPStringEncoding - чрезвычайно старая и редкая строковая кодировка, и, вероятно, она не подходит для использования.Ваши текстовые файлы обычно будут в формате Latin-1 или UTF-8, если они были созданы в Западной Европе или в Северной Америке.Давайте предположим, что сейчас UTF-8 (это NSUTF8StringEncoding.) В идеале вы должны знать кодировку, используемую при записи файлов, и использовать ее при чтении.

Предположительно, у вас есть остальныекод правильный, так как вы получаете строки обратно.Это строки, которые не являются чистыми 7-битными ASCII, которые, вероятно, доставляют вам проблемы.

...