Использование символов Юникода в NSString

У меня возникли проблемы с использованием NSString с символами Юникода, такими как «ç» и «ñ». Вот такой простой пример:

NSString *alphabet = @"abçd";
NSLog(@"alphabet is %@", alphabet);

выводит это на консоль:

алфавит ab√ßd

Как я могу убедиться, что NSString обрабатывает эти символы Юникода? Я попробовал несколько разных подходов, выполнив поиск в Интернете и в справочнике по классу NSString, но, похоже, ни один из них не работает.

Заранее спасибо.


person Rafael    schedule 09.04.2012    source источник


Ответы (2)


вы можете быть уверены, что NSString обработал их правильно, выводя в файл и читая из него...

Я бы со 100% уверенностью предположил, что проблема не в NSString, а в кодировке текста, ожидаемой консолью, или в кодировке текста исходного файла... возможно, в первом.

в отладчике Xcode я получаю ожидаемый результат:

alphabet is abçd

ваш тест:

NSString *alphabet = @"abçd";       
[alphabet writeToFile:[@"~/Desktop/charTest.txt" stringByExpandingTildeInPath] atomically:NO encoding:NSUTF8StringEncoding error:nil];
person Grady Player    schedule 09.04.2012

Вы можете попробовать инициализировать NSString с кодировкой UTF-8.

NSString* newStr = [[NSString alloc] initWithData:theData encoding:NSUTF8StringEncoding];

Код был взят из другого ответа — преобразование NSData в кодировке UTF-8 в NSString

person Mailo Světel    schedule 09.04.2012